本文档仅用于个人学习总结。
libdmtx是一个专门用来解 datamatrix码制的开源代码库。
代码下载:https://sourceforge.net/p/libdmtx/libdmtx/ci/v0.7.4/tree/
wiki:http://libdmtx.wikidot.com/general-instructions
使用介绍:https://blog.csdn.net/qq_34965116/article/details/84202703
稳定版本:0.7.4
vs添加方法(参考博客):
将64位的libmtx.lib libmtx.dll文件以及dmtx.h放入工程目录
将dmtx.h添加添加至头文件。在工程属性页->链接器->输入->附加依赖中加入libdmtx.lib
参考代码:
DmtxMessage *msg;
DmtxRegion *reg;
DmtxImage *img;
img = dmtxImageCreate(binImg.data, binImg.cols, binImg.rows, DmtxPack8bppK);
DmtxDecode *dec = dmtxDecodeCreate(img, 1);
// 增加超时时间。
DmtxTime beginTime = dmtxTimeNow(); // 根据系统设置情况,获得当前时间
long timeout_ms = 20;
DmtxTime stopTime = dmtxTimeAdd(beginTime, timeout_ms); // 增加xx ms。
reg = dmtxRegionFindNext(dec, &stopTime); // 如果超时则认为没有找到
string info;
if (reg != NULL) {
msg = dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined);
if (msg != NULL) {
//cout << msg->output << endl;
info = (char*)msg->output; // 转化成字符串返回去
dmtxMessageDestroy(&msg);
}
dmtxRegionDestroy(®);
}
//else
// cout << "Cannot find codes..." << endl;
dmtxDecodeDestroy(&dec);
dmtxImageDestroy(&img);
个人注明:
dmtxImageCreate时注意图片类型,选择相关的参数(DmtxPack8bppK)
dmtxRegionFindNext中第二个参数是扫描时间上限,达到该时间退出扫描