C# 从扫描的文档中解码条形码

C# 从扫描的文档中解码条形码,c#,.net,zxing,C#,.net,Zxing,我正在使用.NET的ZXing库,无法从提供的图像中获得结果。 在倒数第二行之后,result设置为null,因为条形码阅读器在图像中没有检测到任何条形码。 关于如何设置条形码阅读器,我有什么遗漏吗 BarcodeReader reader = new BarcodeReader() { AutoRotate = true, TryInverted = true, Options = new DecodingOptions { TryHarder

我正在使用.NET的ZXing库,无法从提供的图像中获得结果。 在倒数第二行之后,result设置为null,因为条形码阅读器在图像中没有检测到任何条形码。 关于如何设置条形码阅读器,我有什么遗漏吗

BarcodeReader reader = new BarcodeReader()
{
    AutoRotate = true,
    TryInverted = true,
    Options = new DecodingOptions
    {
        TryHarder = true,
        PureBarcode = true,
        PossibleFormats = new List<BarcodeFormat> { BarcodeFormat.CODE_39 }
    }
};

LuminanceSource source = new ZXing.BitmapLuminanceSource(bitmapImage);
Result result = reader.Decode(source);

Console.WriteLine(result == null ? "Nothing" : result.Text);

ZXING不进行任何图像处理。它使用内部算法从图像中简单地采样某些点。在二维条形码中,可能会从中心线的左至右读取一组点

如果图像的分辨率太低,如您显示的图像。极有可能是ZXING没有意识到这一点


您可以编写自己的图像二值化方法。一个简单的方法是设置一个阈值,如果像素范围在0-255之间,可能是128。将上面的所有值指定为255,将下面的所有值指定为0。后期处理的图像可能更利于ZXING的识别。

您有没有仔细查看结果的值被设置为什么,或者何时出现错误?@developerN53718我已经仔细查看了,它没有给我任何异常,唯一的错误是图像中没有检测到条形码。在倒数第二行之后,结果为空。这就是错误,然后。。。如果在图像中无法识别条形码,则不会将其设置为结果。您是否尝试使用多个条形码来排除条形码本身的问题?我建议尝试使用计算机生成的条形码图像,而不是扫描。这可能只是图像质量的问题。@Blorgbeard第二张图像效果很好。从网站上生成。有没有办法在ZXing中对图像进行二值化?也许这会帮助它在扫描的文档中找到条形码。