Libdmtx 与 ZXing 的 DataMatrix 解码?

Libdmtx vs ZXing for DataMatrix Decoding?

与 libdmtx 相比,ZXing 的 DataMatrix 解码条码定位有多可靠?

我有一组包含 DataMatrix 条形码的贴纸的 png 图像文件(专有,所以很遗憾我无法共享它们)。这些贴纸贴在平坦的表面上,有非常漂亮的静区并且通常位于图像的中心,但光线条件不均匀和轻微的灰尘可能是可靠解码的最大障碍。

我想使用可修改的 Java 库来解码它们,ZXing 似乎是唯一的开源选项(对其他建议开放)。但是,在通过基于 libdmtx 的 ZXing online decoder, I consistently get NO BARCODE FOUND, even on the cleanest images. In contrast, when I run the same images through proprietary online decoders, like Inlite's Free Online Barcode Reader, I get reliable decodes for all the images. My company has implemented a library in C that also reliable decodes the barcode images by processing them and calling libdmtx. Similarly, this online DataMatrix decoder 构建这些图像后,运行 也可以可靠地读取我的图像文件。

ZXing 中的条码本地化是否明显不如 libdmtx? 如果我在通过 ZXing 运行 之前尝试对图像文件进行相同的预处理,我能否获得类似的结果?我非常喜欢 Java 库 (ZXing),但我可能别无选择,只能使用 libdmtx。将不胜感激任何见解,谢谢!

我遇到了与您类似的问题,但在编码方面。根据我的发现,Zxing 肯定不如 Libdmtx。我们在内部使用 C++ 库和 Java 项目。

Zxing在生成条形码时出现中断的情况看我在这里的评论: https://github.com/zxing/zxing/issues/624

但是 Libdmtx 工作流畅。您在 java 世界中拥有的其他免费选项是(它们用于编码):

  • barcode4j
  • Okapi条码

另一种选择是这里相对较新的 ZXing cpp 端口:https://github.com/nu-book/zxing-cpp

它包含一个全新的 DataMatrix 检测器,旨在修复 Java 上游版本的严重限制。它专门设计用于处理低分辨率图像(模块大小低至 2 像素左右)和仅具有所需的 1 个模块相当区域和繁忙背景的符号。

下面的比较当然不是 'fair' 但我刚刚使用 libdmtx 的 dmtxread 实用程序尝试了我的图像测试集,它错过了 17 个样本中的 3 个样本,并且大声疾呼了 300 次比我的代码长 :).