【问题标题】:Scan multiple barcodes with zxing.net用zxing.net扫描多个条码
【发布时间】:2015-01-21 18:42:03
【问题描述】:

我的目标是在这样的较大图像(四大)上检测多个数据矩阵:

根据几个代码示例,我做了一个小测试程序:

Bitmap image = getImage();

DataMatrixReader reader = new DataMatrixReader();
GenericMultipleBarcodeReader genericReader = new genericMultipleBarcodeReader(reader);
Dictionary<DecodeHintType, object> hints = new Dictionary<DecodeHintType,object>();
hints.Add(DecodeHintType.TRY_HARDER, true);

BitmapLuminanceSource source = new BitmapLuminanceSource(image);
HybridBinarizer binarizer = new HybridBinarizer(source);
BinaryBitmap binaryBitmap = new BinaryBitmap(binarizer);
Result[] results = genericReader.decodeMultiple(binaryBitmap,hints);

show(results);

它无法检测到大图像上的任何代码。

但是当它被这样裁剪时,它可以检测到代码:

之后我合并了两个生成的数据矩阵,也失败了:

最后我又用略微裁剪的图像进行了两次测试,都失败了:

所以看来这个库根本不健壮,或者我用错了。

知道如何改进我的结果吗? (包括其他库和预处理)

【问题讨论】:

    标签: c# zxing datamatrix


    【解决方案1】:

    不能说库不健壮,但这里有两个关键因素影响您:

    • Zxing 的数据矩阵检测算法假设条码居中。或者更准确地说,图像的中心在数据矩阵内部。
    • 当条码网格对齐时,Zxing 的多阅读器特别失败。

    我的建议是实施您自己的MultipleBarcodeReader,同时考虑到我提到的内容。

    一种天真的方法可能是将样本图像集中在一个间隔的点网格上,这样每个数据矩阵(无论它在图像中的位置如何)都至少包含一个内部点。您只需要确保排除重复的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多