获取条形码解码的 NULL 值

Posted

技术标签:

【中文标题】获取条形码解码的 NULL 值【英文标题】:Getting NULL value for barcode decoding 【发布时间】:2016-08-19 20:45:45 【问题描述】:

我在 VS 2015 中从 NuGet 包管理器添加了 Zxing.Net。我尝试使用以下代码来解码 CODE_128 条形码。但它给出了 null 作为结果。 同一张图片在包括Zxing Online Decoder在内的几乎所有在线读码网站都成功解码。

using System;
using System.Drawing;
using ZXing.QrCode;
using ZXing.QrCode.Internal;

public string barcode_scan()

    string qr = @"C:\Users\Admin\Desktop\barcode.jpg";
    ZXing.BarcodeReader reader = new ZXing.BarcodeReader();
    var result = reader.Decode((Bitmap)Bitmap.FromFile(qr));
    return result;

我不知道哪里出错了。

编辑:图片附Image with barcode

【问题讨论】:

【参考方案1】:

您是否尝试过:

ZXing.BarcodeReader reader = new ZXing.BarcodeReader()

    AutoRotate = true,
    TryInverted = true,
    Options = new DecodingOptions
    
        TryHarder = true,
        PureBarcode = true,
        PossibleFormats = new List<BarcodeFormat>  BarcodeFormat.CODE_128 
    
;

这不会针对速度进行优化,但如果它有效,您可以删除一些蛮力选项。

【讨论】:

如果我想解码作为输入给出的任何条形码?我应该删除那个BarcodeFormat.CODE_128 吗?? 你的评论特别提到了CODE_128,所以我给了你。还有其他格式选项,可以添加到List&lt;&gt; 那么要么.Net 端口无法正常工作,您需要向项目提交问题,或者向我们提供您尝试使用的图像以便进行测试。 我已附上图片 不要使用“PureBarcode = true”选项。仅针对由编码器生成的黑白图像引入该图像。它通常不适用于现实生活中的图像。顺便提一句。使用 ZXing.Net 项目的 WinForms 示例应用程序可以成功解码条码。您需要选项“TryHarder = true”。【参考方案2】:

如果您裁剪图像的一部分,则条形码会被正确解码。显然 zxing 无法确定“MDS”条形码是您要扫描的条形码。

仅从图像中删除 EAN13 是不够的,但如果您的图像只有垂直的“大象条”,它确实会找到条形码:

换句话说,您需要“瞄准”扫描仪:)

【讨论】:

是的,这解决了问题。但是有什么方法可以从整个图像中扫描该条形码?

以上是关于获取条形码解码的 NULL 值的主要内容,如果未能解决你的问题,请参考以下文章

用C#实现的条形码和二维码编码解码器

用OpenCV和Python识别二维码与条形码

条形码和二维码编码解码工具类源码

条形码识别

基于opencv3.0和zbar下的条形码与二维码识别

ZingChart:具有一系列空值的堆积条形图