图像处理
新闻详情

Datamatrix 二维码识别-Libdmtx0.7.4库使用

发布时间:2021-08-05 11:24:03 浏览次数:7062

标准二维码的识别

Libdmtx 是一个专门用于识别 datamatrix 二维码的库。搭配Opencv可以较为准确识别工业二维码 ECC200(关于二维码的编码种类以及 ECC200)。接下来是 libdmtx 在VS2015 中的配置,以及简单的测试用例。

 

step1 运行环境

1、Windows 10 64位

2、Visual Studio 2015Professional

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::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(&reg);

         }

         dmtxDecodeDestroy(&dec);

         dmtxImageDestroy(&img);

         cv::imshow("Test",image);

         cv::waitKey();

         return0;

}

step4 测试

实际测试中,选择使用摄像头捕获用代码生成的DM码,解码结果为CSDN博客网址。

 

有关条码定位:

代码中条码区域reg指针对象可以获取条码的位置信息,但是测试发现定位效果一般。

(测试图来自网络)



在线客服 双翌客服
客服电话
  • 0755-23712116
  • 13822267203