我的目标是在像这样的大图像(四大)上检测多个数据矩阵:
根据几个代码示例,我做了一个小测试程序:
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);
它无法检测到大图像上的任何代码。
但它可以检测到代码,当它被裁剪时:
之后我合并了两个生成的数据矩阵,它也失败了:
最后,我用略微裁剪的图片再进行了两次测试,两次都失败了:
所以看起来这个库根本不健壮,或者我使用它错了。
知道如何改善我的成绩吗? (包括其他库和预处理)
答案 0 :(得分:3)
不能说图书馆不健全,但这里有两个影响你的关键因素:
我的建议是考虑到我提到的内容,实施您自己的MultipleBarcodeReader
。
一种天真的方法可以是将样本图像置于以间隔网格为中心的网格上,这样每个数据矩阵(无论其在图像中的位置)都包含至少一个内部点。您只需确保排除重复的代码。