【问题标题】:How to scan a DPM datamatrix from a mobile app如何从移动应用程序扫描 DPM 数据矩阵
【发布时间】:2018-02-21 14:16:25
【问题描述】:

我正在尝试在 Android 应用中利用 ZXing 来扫描 data matrixes。到目前为止,我在打印数据矩阵方面取得了成功,例如 this:

但其他通过激光打印或打孔的数据矩阵具有circle-looking 标记,而不是方形标记。

这些都存在问题。我发现唯一能够扫描这个的应用程序是QRDroid。这个article 说QRDroid 使用ZXing,所以我在想如果可以的话,一定有办法。不幸的是,QRDroid 不是一个开源项目,所以我不知道怎么做。

当然,QRDroid 有可能在尝试读取数据矩阵之前使用一种算法以某种方式将带圆圈的标记转换为方形标记。我对Java中的图像处理一无所知,所以我无法想象这是如何完成的。

我的问题是是否有办法调整 ZXing 以读取这种类型的数据矩阵,或者是否有任何库可以用来操作图像以使其被 ZXing 读取。

编辑:

如果我使用图像编辑器 -e.g.我使用https://www.befunky.com- 并应用了 10 的模糊,然后它看起来像一个普通的打印数据矩阵,我的扫描工作正常。我应该如何在我的 Android 应用中执行此操作?

【问题讨论】:

    标签: android image-processing zxing datamatrix


    【解决方案1】:

    经过一些研究,我发现这种类型的标记并不是真正的标准数据矩阵,而是被制造业称为DPM, which stands for "Direct Part Marking",尽管我读过other sources call it "Dot Peen Marking""Dot Peen Matrix"

    我在已经存在的issue in the Zxing 存储库上发布了同样的问题,这是我得到的答复:

    问题是WhiteRectDetector。它在代码中找到一个白色矩形,类似于this issue。如果您稍微旋转图像(例如 10°),或者像以前一样模糊它,或者在进行适当大小的像素膨胀后进行腐蚀,您会得到应该(大部分)可以检测到的东西。

    由于截止日期,修改WhiteRectDetector 以允许使用点而不是正方形对我来说并不是一个真正的选择,所以我最终从 Zxing 切换到Scandit,即proven to be able to scan this

    Scandit 是一个专有库,但我还没有真正找到任何其他替代方案。不过,您可以获得试用许可证。对于那些想要尝试扫描 DPM 的人来说,文档对于如何启用此符号系统的扫描不是很清楚,所以这里是诀窍。

    在安卓中:

    settings.getSymbologySettings(Barcode.SYMBOLOGY_DATA_MATRIX)
    .setExtensionEnabled("direct_part_marking_mode", true);
    

    在 Objective-C 中:

    [[settings settingsForSymbology:SBSSymbologyDatamatrix] 
    setExtension:@"direct_part_marking_mode" enabled:YES];
    

    【讨论】:

    • @Mig82 的伟大发现!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    相关资源
    最近更新 更多