2012-04-09 27 views

回答

1

ZXing的C++端口中的DM支持是Java的最新版本(許多1D代碼並非如此)。這不是默認情況下,測試應用程序允許的,但很容易使(和will be enabled by default in the future.

我沒有與實際使用DM解碼器的個人經驗,但它包含在測試套件和我在相信可用Android應用。

0

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

它具有各種接口的支持。這裏和其他地方似乎都有很好的評論......。

(但我尋求幫助建設公用事業:-)

0

由於沒有「真正」的答案被張貼了我的問題,至少沒有答案,從有經驗的人使用這些庫的一個用於讀取二維矩陣代碼,我想我會張貼我自己的經驗。

我試過這兩個庫,都可以讀取代碼,但性能不足以滿足我的情況。在我的情況下,代碼通常不是「完美」的,點可能會丟失,尺寸不同,代碼可能有點偏斜。這兩個庫都有讀取這些代碼的問題。

最後我用了一個商業(不是免費的)庫,Sapera。 Sapera能夠更好地閱讀非完美代碼。我使用了Sapera,因爲它過去曾在我的公司使用過,但其他商用機器視覺庫(如Halcon)很可能也表現良好。

1

然後,這是一個真正的答案。 我已經成功地使用了libdmtx和libzxing。 Libdmtx更直接,因爲它僅限於數據矩陣。在我的體驗中,結果奇怪地說並不總是確定性的。 Libzxing也不錯,但是當你做真正的生產(數百萬或讀出)時,它有時會因爲內存管理不完美而崩潰。它非常好,但對於真實的生產環境並不完美。

庫,libzxing和libdmtx都需要你擁有圖像的datamatrix deadcenter,而且相當大。這意味着你需要自己做預定位。 我設法做到這一點,只是使用圖像例程,尋找'L'形狀,然後用一個最小面積方形包圍盒等一些智能。然後解碼和錯誤correciton步驟本身我使用從libzxing,仍然不完美。

如果你想要一個生產環境,或者在自己的限制範圍內自己做所有事情,並且如果你對此不滿意,可以使用付費軟件包,這反過來不會完全適合您的應用程序並且花費不菲。

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