熱(re)線電(dian)話:0755-23712116
郵箱:contact@legoupos.cn
地址:深圳(zhen)市寶安區沙井街道后亭茅(mao)洲山(shan)工業(ye)園工業(ye)大廈全至科技創新園科創大廈2層2A
標準二維碼的識別
Libdmtx 是(shi)一個(ge)專門(men)用于識(shi)別 datamatrix 二(er)維(wei)碼的庫(ku)。搭配Opencv可以較(jiao)為準確識(shi)別工業二(er)維(wei)碼 ECC200(關于二(er)維(wei)碼的編碼種類以及(ji) ECC200)。接下來是(shi) libdmtx 在VS2015 中(zhong)的配置,以及(ji)簡單(dan)的測試(shi)用例。
1、Windows 10 64位(wei)
2、Visual Studio 2015Professional
3、OpenCV 3.4.3
4、libdmtx 0.7.4
1、在該鏈接//sourceforge.net/p/libdmtx/libdmtx/ci/v0.7.4/tree/將0.7.4和0.7.2兩個版本的庫下載至本機,并解壓(ya)。
2、將0.7.2文件(jian)夾中的project和wrapper文件(jian)夾拷(kao)到0.7.4的文件(jian)夾中。
3、打開libdmtx-libdmtx-0.7.4\project\visualc9路徑下的(de)libdmtx.sln解決方案文(wen)件,選(xuan)(xuan)中倒數(shu)第二個選(xuan)(xuan)項(xiang)。
4、選中解(jie)決方案libdmtx,右鍵(jian)重(zhong)新加載(zai)項目,確定單向升級。
5、默認生成的是32位(wei)的lib和dll,如果要生成64位(wei)的,需要配置管理器。
6、配置好管理器后,右鍵(jian)解決方(fang)(fang)案(an),生成解決方(fang)(fang)案(an),不報錯即可生成對應的lib和dll文件。
1、將libdmtx-libdmtx-0.7.4\project\visualc9\x64\Debug下的(de)libdmtx.lib和(he)libdmtx.dll文件,以及0.7.4文件夾(jia)下的(de)dmtx.h文件一同(tong)拷(kao)出(chu)備用。
2、在VS2015中(zhong)新(xin)建空項(xiang)目,在屬性管(guan)理器(qi)->鏈接(jie)器(qi)->輸入->附加依賴項(xiang)中(zhong)將libdmtx.lib添加進(jin)去(qu)。
3、復制以下(xia)代碼,選擇一張DM碼的圖片放(fang)入空項目路徑中,運行解碼。
#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) //如果(guo)檢(jian)測到存在DM碼區域
{
msg= dmtxDecodeMatrixRegion(dec, reg, DmtxUndefined); //解析DM碼
if(msg != NULL) //如(ru)果DM碼解(jie)析成功(gong)
{
std::cout<< "DataMatrix Decode Result: " << msg->output<< std::endl;
dmtxMessageDestroy(&msg);
}
dmtxRegionDestroy(®);
}
dmtxDecodeDestroy(&dec);
dmtxImageDestroy(&img);
cv::imshow("Test",image);
cv::waitKey();
return0;
}
實際測試中,選擇使用攝(she)像頭捕(bu)獲用代碼(ma)(ma)生(sheng)成的DM碼(ma)(ma),解碼(ma)(ma)結(jie)果為CSDN博(bo)客網址。
有關條碼定位:
代碼(ma)中(zhong)條碼(ma)區(qu)域reg指(zhi)針(zhen)對象可以獲取條碼(ma)的(de)位(wei)置信息,但是測試發(fa)現定位(wei)效果一般。
(測試圖來自網絡)