使用zxing.net扫描多个条形码

时间:2015-01-21 18:42:04

标签: c# zxing datamatrix

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

full image

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

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);

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

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

cropped

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

enter image description here

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

enter image description here

enter image description here

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

知道如何改善我的成绩吗? (包括其他库和预处理)

1 个答案:

答案 0 :(得分:3)

不能说图书馆不健全,但这里有两个影响你的关键因素:

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

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

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