-
大小: 113KB文件類型: .rar金幣: 2下載: 0 次發布日期: 2021-06-06
- 語言: 其他
- 標簽:
資源簡介
利用Opencv和libdmtx識別 datamatrx ECC200二維碼。可以識別旋轉的非標準二維碼。文件中包含了 libdmtx必需的鏈接庫和頭文件。

代碼片段和文件信息
#include?
#include?“dmtx.h“
#include?
using?namespace?std;
using?namespace?cv;
void?ImgCorrection(Mat?imageSource);
int?main()
{
DmtxMessage?*msg;
DmtxRegion?*reg;
Mat?src1?=?imread(“rotateImg.jpg“0);
imshow(“原圖“?src1);
ImgCorrection(src1);//執行該函數后,校正后的圖片保存在工目錄下
Mat?src?=?imread(“corrImge.jpg“);
imshow(“原圖校正后“?src);
if?(!src.data){
cout?<“Load?image?failed!“?< return?0;
}
cout?<“非二維碼識別:“?<
DmtxImage?*img;
img?=?dmtxImageCreate(src.data?src.cols?src.rows?DmtxPack24bppRGB);
DmtxDecode?*dec?=?dmtxDecodeCreate(img?1);
reg?=?dmtxRegionFindNext(dec?NULL);
if?(reg?!=?NULL)?{
msg?=?dmtxDecodeMatrixRegion(dec?reg?DmtxUndefined);
if?(msg?!=?NULL)?{
cout?<output?< dmtxMessageDestroy(&msg);
}
dmtxRegionDestroy(®);
}
dmtxDecodeDestroy(&dec);
dmtxImageDestroy(&img);
waitKey(0);
return?0;
}
//二維碼的校正函數
void?ImgCorrection(Mat?imageSource)
{
Mat?image;
imageSource.copyTo(image);
GaussianBlur(image?image?Size(3?3)?0);??//濾波??
threshold(image?image?100?255?CV_THRESH_BINARY);??//二值化??
imshow(“二值化“?image);
Mat?element?=?getStructuringElement(2?Size(7?7));??//膨脹腐蝕核??
dilate(image?image?element);
imshow(“膨脹“?image);
Mat?image1;
Laplacian(image?image1?image.depth()?1);//拉普拉斯變換尋找邊界
imshow(“邊界“?image1);
//尋找直線??
vectorlines;
HoughLines(image1?lines?1?CV_PI?/?150?60?0?0);
Mat?DrawLine?=?Mat::zeros(image1.size()?CV_8UC1);
//Mat?DrawLine?=?Mat::zeros(image1.size()?image1.type());
for?(int?i?=?0;?i {
float?rho?=?lines[i][0];
float?theta?=?lines[i][1];
Point?pt1?pt2;
double?a?=?cos(theta)?b?=?sin(theta);
double?x0?=?a*rho?y0?=?b*rho;
pt1.x?=?cvRound(x0?+?1000?*?(-b));
pt1.y?=?cvRound(y0?+?1000?*?a);
pt2.x?=?cvRound(x0?-?1000?*?(-b));
pt2.y?=?cvRound(y0?-?1000?*?a);
line(DrawLine?pt1?pt2?Scalar(255)?1?CV_AA);
}
imshow(“直線“?DrawLine);
Point2f?P1[4];
Point2f?P2[4];
vectorcorners;
goodFeaturesToTrack(DrawLine?corners?4?0.1?10?Mat());?//角點檢測??
cout?<“角點坐標:“?<
for?(int?i?=?0;?i {
circle(DrawLine?corners[i]?3?Scalar(255)?3);
P1[i]?=?corners[i];
cout?< }
imshow(“交點“?DrawLine);
P2[0]?=?Point2f(0?0);
P2[1]?=?Point2f(0?imageSource.rows);
P2[2]?=?Point2f(imageSource.cols?imageSource.rows);
P2[3]?=?Point2f(imageSource.cols?0);
Mat?elementTransf;
elementTransf?=?getAffineTransform(P1?P2);
warpAffine(imageSource?imageSource?elementTransf?imageSource.size()?1?0?Scalar(255));
imwrite(“corrImge.jpg“?imageSource);//校正后的圖片保存
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????23867??2017-09-01?19:17??libdmtxTest\libdmtxTest\corrImge.jpg
?????文件??????25214??2017-03-04?14:17??libdmtxTest\libdmtxTest\data_matrix_encode.jpg
?????文件??????21398??2011-08-22?03:48??libdmtxTest\libdmtxTest\dmtx.h
?????文件?????156672??2017-08-30?11:15??libdmtxTest\libdmtxTest\libdmtx.dll
?????文件??????17904??2017-08-30?11:15??libdmtxTest\libdmtxTest\libdmtx.lib
?????文件???????2908??2017-09-01?19:05??libdmtxTest\libdmtxTest\libdmtxTest.cpp
?????文件???????4256??2017-08-30?11:21??libdmtxTest\libdmtxTest\libdmtxTest.vcxproj
?????文件???????1069??2017-08-30?11:21??libdmtxTest\libdmtxTest\libdmtxTest.vcxproj.filters
?????文件??????15154??2017-08-30?16:13??libdmtxTest\libdmtxTest\rotateImg.jpg
?????文件????????979??2017-08-30?11:18??libdmtxTest\libdmtxTest.sln
????..A..H.?????22016??2017-09-01?19:17??libdmtxTest\libdmtxTest.v12.suo
?????目錄??????????0??2017-09-01?19:17??libdmtxTest\libdmtxTest
?????目錄??????????0??2017-09-01?19:17??libdmtxTest
-----------?---------??----------?-----??----
???????????????291437????????????????????13
- 上一篇:STM32 驅動AD5412
- 下一篇:查看型鋼截面特性小程序
評論
共有 條評論