【发布时间】:2019-10-16 03:17:47
【问题描述】:
我有以下代码:
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ZXing;
namespace SeparatorPageSplit.framework
{
class QRCodeScanner
{
BarcodeReader reader;
public QRCodeScanner()
{
try
{
this.reader = new BarcodeReader { AutoRotate = true, TryInverted = true };
this.reader = new BarcodeReader();
this.reader.Options.PossibleFormats = new List<BarcodeFormat>();
this.reader.Options.PossibleFormats.Add(BarcodeFormat.QR_CODE);
// this.reader.Options.TryHarder = true;
}
catch (Exception ex)
{
Program.WriteToLogFile(ex.ToString());
}
}
public Boolean IsQRCodeFound(string ImagePath)
{
string decoded = "";
Bitmap bitmap = new Bitmap(ImagePath);
try
{
Result result = this.reader.Decode(bitmap);
if (result != null)
{
decoded = result.ToString().Trim();
}
}
catch (Exception ex)
{
Program.WriteToLogFile(ex.ToString());
}
finally
{
bitmap.Dispose();
}
if (decoded == "CCA001")
{
return true;
}
else
{
return false;
}
}
}
}
我尝试阅读以下图片:
如果我以彩色或灰度扫描,此代码可以正常工作。当我以黑白扫描时,它不起作用。
ZXing 中是否有一些设置允许它进行扫描?
有没有一种简单的方法可以擦掉小点?
[编辑] 我们正在使用从 Visual Studio 中的 Nuget 安装的 ZXing.Net v0.16.5。 Nuget 在可用的最新版本中显示。
【问题讨论】:
-
确保您使用的是最新版本:github.com/micjahn/ZXing.Net/issues/207
-
zxing 不适用于黑白图像。大多数时候,扫描仪会在代码边缘添加一些奇怪的黑色像素。内部启发式对他们有问题。如果可能,请使用灰度图像。如果无法做到这一点,请将图像从黑白转换为灰度,并在解码前添加高斯模糊滤镜。
-
@Michael 是否有可以处理黑白图像的替代二维码阅读器?
-
还有许多其他条码扫描库。不确定是否可以处理它,但我认为可以。而且大部分都不是免费的。