6

我正在寻找一个用于读取数据矩阵代码的 C++ 库,特别是 ECC 200 代码(而不是 QR 代码)。我找到了 libdmtxzxing。zxing 是java,但是好像有C++ 端口。有没有人有使用这些库或可能使用其他库阅读 ECC 200 代码的经验?

4

5 回答 5

1

ZXing 的 C++ 端口中的 DM 支持与 Java 是最新的(许多一维代码并非如此)。它在测试应用程序中默认不启用,但很容易启用(并且将来会默认启用。

我没有任何实际使用 DM 解码器的个人经验,但它包含在测试套件中,我相信它可以在 Android 应用程序中使用。

于 2012-04-09T16:48:10.773 回答
1

那么这是一个真正的答案。我已经成功使用了 libdmtx 和 libzxing。Libdmtx 更直接,因为它仅限于数据矩阵。根据我的经验,奇怪的是,结果并不总是确定性的。Libzxing 也很好,但是当您进行实际生产(数百万或读数)时,由于内存管理不完美,它有时会崩溃。它真的很好,但对于真正的生产环境来说并不完美。

这两个库 libzxing 和 libdmtx 都要求您拥有图像的数据矩阵死点并且非常大。这意味着您需要自己进行预本地化。我设法通过仅使用图像例程并寻找“L”形状然后使用最小面积平方边界框等进行一些智能来做到这一点。然后我使用libzxing的解码和错误校正步骤本身,这仍然不是完美的。

如果您选择生产环境,要么在您自己的限制范围内自己做所有事情,如果您不喜欢这样做,请使用付费软件包,这反过来又不会完全适合您的应用程序并且需要花钱。

libzxing-cpp 的最佳端口是用户 glassenchidna 的端口。https://github.com/glassechidna/zxing-cpp

于 2016-02-09T17:39:42.157 回答
0

我目前正在尝试使用 libdmtx http://www.libdmtx.org/

它支持各种接口。它似乎在这里和其他地方都有很好的评论......

(但我正在寻求有关构建实用程序的帮助:-)

于 2012-05-05T10:46:22.113 回答
0

由于没有对我的问题发布“真实”答案,至少没有对这些库之一有阅读二维矩阵代码经验的人给出答案,我想我会发布自己的经验。

我尝试了这两个库,并且都可以读取代码,但是对于我的情况,性能还不够好。在我的情况下,代码通常不是“完美”的,点可能会丢失,大小不同,代码可能有点歪斜。这两个库在阅读这些代码时都有问题。

最后,我使用了一个商业(非免费)库Sapera。Sapera 能够更好地阅读不完美的代码。我使用 Sapera 是因为它过去曾在我的公司中使用过,但很有可能其他商业机器视觉库(如 Halcon)也表现良好。

于 2013-11-20T13:37:20.607 回答
0

我大量使用了 Halcon,包括解码 DataMatrix。我可以告诉你,它真的很好用。即使由于读取圆形物体或歪斜的印刷品而导致失真,它仍然能够在短时间内很好地读取它们。

唯一的缺点,也是一个很大的缺点,就是价格。运行时许可证非常昂贵,并且您需要开发许可证才能购买运行时许可证,这更加昂贵。除非您的项目有足够的资金,否则由于这个原因,这可能不是一个选择。祝你好运!

于 2018-12-04T05:18:01.827 回答