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

6

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

基于几个代码示例,我编写了一个小测试程序:

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个回答

3
不能说这个库不够强大,但有两个关键因素会影响你在这里的使用:
  • Zxing的数据矩阵检测算法假设条形码是居中的。或者更准确地说,图像的中心在数据矩阵内部。
  • Zxing的多读取器在条形码网格对齐时会出现特殊故障。
我的建议是根据我提到的内容实现自己的MultipleBarcodeReader
一个天真的方法可能是获取以点网格为中心的样本图像,使每个数据矩阵(无论其在图像中的位置如何)至少包含其中一个点。只需确保排除重复代码即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接