与libdmtx相比,ZXing用于DataMatrix解码的条形码本地化的可靠性如何?
我有一组png图像文件的贴纸(专有的,很遗憾,我无法共享它们),其中包含DataMatrix条形码。这些贴纸位于平坦的表面上,具有非常好的安静区域,通常位于图像的中心,但是会遇到照明条件不均和灰尘少的问题,这可能是可靠解码的最大障碍。
我想使用可修改的Java库对它们进行解码,并且ZXing似乎是唯一的开源选项(对其他建议开放)。但是,通过ZXing online decoder运行这些图像时,即使在最干净的图像上,我也始终找不到条形码。相反,当我通过专有的在线解码器(例如Inlite's Free Online Barcode Reader)运行相同的图像时,我将获得所有图像的可靠解码。我公司已经在C语言中实现了一个库,该库还通过处理条形码图像并调用libdmtx来对条形码图像进行可靠地解码。同样,基于online DataMatrix decoder的libdmtx也可以可靠地读取我的图像文件。
ZXing中的条形码定位是否明显低于libdmtx? 如果在通过ZXing运行图像文件之前尝试对图像文件进行相同的预处理,是否可以获得类似的结果?我非常喜欢Java库(ZXing),但是除了使用libdmtx之外,我别无选择。将不胜感激,谢谢!
答案 0 :(得分:0)
我和您有类似的问题,但在编码方面。根据我的发现,Zxing当然不如Libdmtx。我们内部都在C ++和Java项目中使用这两个库。
在某些情况下,Zxing在生成条形码时中断,请在此处查看我的评论: https://github.com/zxing/zxing/issues/624
但是Libdmtx可以流畅地工作。您在Java世界中拥有的其他免费选项是(它们用于编码):
答案 1 :(得分:0)
另一种替代方法是此处相对较新的ZXing cpp端口:https://github.com/nu-book/zxing-cpp。
它包含一个全新的DataMatrix检测器,该检测器旨在修复Java上游版本的严重限制。它专门用于处理低分辨率图像(模块大小低至2像素左右)和仅具有所需1个模块区域和繁忙背景的符号。
以下比较肯定不是“公平的”,但我只是使用libdmtx的dmtxread
实用程序尝试了我的图像测试集,它错过了17个样本中的3个,并且花费了我300倍的时间代码:)。