libdmtx是一个对DM(DataMatrix)码进行编码和解码的开源库。
有关DM码的介绍可参考:https://www.cnblogs.com/gcczhongduan/p/5380337.html
step1 运行环境
1、Windows 10 64位
2、Visual Studio 2015 Professional
3、OpenCV 3.4.3
4、libdmtx 0.7.4
step2 编译生成库文件
1、在该链接https://sourceforge.net/p/libdmtx/libdmtx/ci/v0.7.4/tree/将0.7.4和0.7.2两个版本的库下载至本机,并解压。
2、将0.7.2文件夹中的project和wrapper文件夹拷到0.7.4的文件夹中。
3、打开libdmtx-libdmtx-0.7.4\project\visualc9路径下的libdmtx.sln解决方案文件,选中倒数第二个选项。
4、选中解决方案libdmtx,右键重新加载项目,确定单向升级。
5、默认生成的是32位的lib和dll,如果要生成64位的,需要配置管理器。
6、配置好管理器后,右键解决方案,生成解决方案,不报错即可生成对应的lib和dll文件。
step3 配置库文件
1、将libdmtx-libdmtx-0.7.4\project\visualc9\x64\Debug下的libdmtx.lib和libdmtx.dll文件,以及0.7.4文件夹下的dmtx.h文件一同拷出备用。
2、在VS2015中新建空项目,在属性管理器->链接器->输入->附加依赖项中将libdmtx.lib添加进去。
3、复制以下代码,选择一张DM码的图片放入空项目路径中,运行解码。
#include <iostream>
#include <opencv2\opencv.hpp>
#include "dmtx.h"
int main()
{
DmtxMessage *msg;
DmtxRegion *reg;
cv::Mat src = cv::imread("DM_code.jpg");
if (!src.data)
{
std::cout << "cannot load image!" << std::endl;
}
DmtxImage *img;
img = dmtxImageCreate(src.data, src.cols, src.rows, DmtxPack24bppRGB);
DmtxDecode *dec = dmtxDecodeCreate(img, 1);
reg = dmtxRegionFindNext(dec, NULL);
if (reg != NULL) //如果检测到存在DM码区域
{
msg = dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined); //解析DM码
if (msg != NULL) //如果DM码解析成功
{
std::cout << "DataMatrix Decode Result: " << msg->output << std::endl;
dmtxMessageDestroy(&msg);
}
dmtxRegionDestroy(®);
}
dmtxDecodeDestroy(&dec);
dmtxImageDestroy(&img);
cv::imshow("Test", image);
cv::waitKey();
return 0;
}
step4 测试
实际测试中,选择使用摄像头捕获用代码生成的DM码,解码结果为本站博客网址。
有关条码定位:
代码中条码区域reg指针对象可以获取条码的位置信息,但是测试发现定位效果一般。
(测试图来自网络)
参考文章:
https://blog.csdn.net/qq_34965116/article/details/84202703
https://blog.csdn.net/tfb760/article/details/91312804
http://libdmtx.wikidot.com/libdmtx-on-windows-using-visual-studio
https://blog.csdn.net/wangduanqiugao/article/details/78696337
https://www.cnblogs.com/gcczhongduan/p/5380337.html
https://blog.csdn.net/p154613730/article/details/83999288
https://blog.csdn.net/fengbingchun/article/details/44279967
https://blog.csdn.net/fengbingchun/article/details/53889293(先生成二维码再解码)
Juliet 于 2019.9