Windows+VS2015+libdmtx学习总结

本文档仅用于个人学习总结。

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(&reg);
	}
	//else
	//	cout << "Cannot find codes..." << endl;
	dmtxDecodeDestroy(&dec);
	dmtxImageDestroy(&img);

个人注明:
dmtxImageCreate时注意图片类型,选择相关的参数(DmtxPack8bppK)
dmtxRegionFindNext中第二个参数是扫描时间上限,达到该时间退出扫描

你可能感兴趣的:(软件与库)