Datamatrix二维码开源解码库libdmtx
来源:互联网 发布:java微信公众号开发pdf 编辑:程序博客网 时间:2024/06/07 01:14
最近一个项目需要扫描二维码,一开始想到的是开源的库ZXing(我使用的是它的Qt封装QZXing)。我做了以下两步工作:
1、上网查到了图片中的二维码是Data Matrix码,ZXing的文档说是可以解码的。我在构造ZXing对象时特意将DecoderFormat设置成Data Matrix,经测试解不了码。
2、对图像进行预处理,高斯滤波、二值化、形态学处理等,甚至使用画图工具手动清除所有的干扰,但是ZXing还是解不了码。
正在一筹莫展时,我又找到了另外一个开源的库libdmtx,官网是http://www.libdmtx.org/。libdmtx是一个专门用来处理Data Matrix码的,有源码,可是文档比较少,也没有使用例程。摸索了一两个小时才知道简单的应用。
一、编译源码
在Ubuntu编译libdmtx源码比较简单,在其readme文档里有说明。但是中途还是遇到了一个小问题:在运行./autogen.sh时报”找不到m4文件夹“的错误。可以在源码根目录下建一个空的文件夹,并命名为m4,重新运行./autogen.sh就可以了。
二、应用
libdmtx有提供编译好的命令,如dmtxread和dmtxwrite。需要使用命令sudo apt-get install libdmtx-utils安装。安装完后就可以在命令行直接调用dmtxread "datamatrix.bmp" 来解码了。
libdmtx库用到4个主要的结构:
DmtxImage 保存着图像的属性以及一个指向像素数据的指针,这些像素数据保存在调用的程序里。
DmtxDecode 保存着控制解码行为和跟踪扫描过程的数值。当扫描一张新的图像,调用的程序需要每次重新创建新的DmtxDecode结构,而不是重用旧的结构。
DmtxRegion 以像素坐标定义了一个4边形的区域。区域可以从几乎任何方向获得,而且它们的拐角并不需要形成正确的角度。libdmtx 用它自己的结构来保存潜在条码的位置,程序调用方每调用一次获得一个位置。
DmtxMessage 保存着从条码提取出的解码信息。一个成功解码的区域将精确地产生一个的信息。
由于要进行图像预处理,我在项目中也使用了OpenCV库。预处理主要包括滤波、二值化、形态学处理、尺寸变换(如果图太大的话应进行resize)等。
下面的代码主要是为了说明libdmtx的简单调用,因此预处理就不给出来了。
三、测试结果
项目采集到的原图是1280*1024的,使用上面的程序去解码耗时一分钟以上。于是我把原图缩小成160*128,解码平均需要20ms。
参考:
1、libdmtx官网:http://www.libdmtx.org/
2、Data matrix : http://baike.baidu.com/view/1553388.htm
3、libdmtx例子:http://m.blog.csdn.net/blog/chineseboytom/8082187
0 0
- Datamatrix二维码开源解码库libdmtx
- DataMatrix编码 关于libdmtx的使用
- Halcon 识别DataMatrix二维码
- Datamatrix (只翻译解码部分)
- 开源二维码QR CODE编码/解码(识别)库
- VS2013 + Opencv + libdmtx 识别 datamatrx ECC200 二维码 [入门]
- 利用开源ZXing库,在android上进行二维码简单的编码和解码
- 开源二维码库
- 在VS中编译libdmtx库的源码
- zxing解码二维码图片
- java 解码二维码
- 二维码解码工具
- opencv二维码识别解码
- WINCE WM 下QR, DM, PDF417 二维码解码库
- 使用日本人的库QRCode编解码二维码
- 使用Google的ZXing库实现编解码二维码
- 二维码编码与解码类库ThoughtWorks.QRCode
- 开源二维码库libqrencode
- 转载:Git SSH Key 生成步骤
- 初学hadoop之linux系统操作的hdfs的常用命令
- web开发中添加分享按钮(有分享次数)
- dll创建中,遇到WARN:inconsistent dll linkage. dllexport assumed.
- Win7中自带截图工具
- Datamatrix二维码开源解码库libdmtx
- USACO1.2.2 - transform
- 正则表达式的贪婪与非贪婪
- 数组作数据成员(拓展2)
- 一身黑色超短裙亮相的全智贤空降上海代言
- 利用快速排序求解k-th小数
- hdu2097
- oc中将CGRect、CGSize、CGPoint等结构体转换为字符串
- 代码说明生成工具doxygen的使用