热线电话:0755-23712116
邮箱:contact@shuangyi-tech.com
地址:深圳市宝安区沙井街道后亭茅洲山工业园工业大厦全至科技创新园科创大厦2层2A
标准二维码的识别
Libdmtx 是一个专门用于识别 datamatrix 二维码的库。搭配Opencv可以较为准确识别工业二维码 ECC200(关于二维码的编码种类以及 ECC200)。接下来是 libdmtx 在VS2015 中的配置,以及简单的测试用例。
1、Windows 10 64位
2、Visual Studio 2015Professional
3、OpenCV 3.4.3
4、libdmtx 0.7.4
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文件。
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::Matsrc = 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();
return0;
}
实际测试中,选择使用摄像头捕获用代码生成的DM码,解码结果为CSDN博客网址。
有关条码定位:
代码中条码区域reg指针对象可以获取条码的位置信息,但是测试发现定位效果一般。
(测试图来自网络)
热线电话:0755-23712116
邮箱:contact@shuangyi-tech.com
地址:深圳市宝安区沙井街道后亭茅洲山工业园工业大厦全至科技创新园科创大厦2层2A