本代码,基于opencv寻找二维码的四个顶点,并通过仿射变换对二维码进行畸变矫正。不须标定,简单易用。
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-06-21 16:50 jiaozheng
目录 0 2018-06-21 16:47 jiaozhengin_debug
文件 5825536 2018-05-08 00:26 jiaozhengin_debugQt5Core.dll
文件 13222912 2018-05-08 00:26 jiaozhengin_debugQt5Cored.dll
文件 6052352 2018-01-16 19:32 jiaozhengin_debugQt5Gui.dll
文件 13869568 2018-01-16 19:32 jiaozhengin_debugQt5Guid.dll
文件 1228800 2018-01-16 19:31 jiaozhengin_debugQt5Network.dll
文件 43008 2018-01-18 13:58 jiaozhengin_debugQt5TextToSpeech.dll
文件 134144 2018-01-18 13:58 jiaozhengin_debugQt5TextToSpeechd.dll
文件 5588992 2018-01-16 19:40 jiaozhengin_debugQt5Widgets.dll
文件 11732992 2018-01-16 19:40 jiaozhengin_debugQt5Widgetsd.dll
文件 73877 2018-06-20 14:10 jiaozhengin_debugchessa1.jpg
文件 151958 2018-06-21 16:50 jiaozhengin_debugjiaozheng.bmp
文件 140288 2018-06-21 16:50 jiaozhengin_debugjiaozheng.exe
文件 3042640 2018-06-21 16:50 jiaozhengin_debugjiaozheng.ilk
文件 4878336 2018-06-21 16:50 jiaozhengin_debugjiaozheng.pdb
文件 1349632 2018-01-16 19:47 jiaozhengin_debugqwindows.dll
目录 0 2018-06-21 16:39 jiaozhengin_release
文件 73877 2018-06-20 14:10 jiaozhengin_release1.jpg
文件 31232 2018-06-20 14:13 jiaozhengin_releasejiaozheng.exe
文件 1262 2018-06-20 14:04 jiaozhengjiaozheng.pro
文件 23975 2018-06-21 16:50 jiaozhengjiaozheng.pro.user
文件 4231 2018-06-21 16:50 jiaozhengmain.cpp
#include
#include
#include
#include
using namespace cv;
using namespace std;
//https://zhuanlan.zhihu.com/p/24591720
void sort_point(vector & vpvector & dest_vp)
{
Point2f temp;
temp.x=0;temp.y=0;
dest_vp.push_back(temp);
dest_vp.push_back(temp);
dest_vp.push_back(temp);
dest_vp.push_back(temp);
for(int i=0;i {
if(vp[i].x < 460.8/2 && vp[i].y<328.8/2){dest_vp[0].x=vp[i].x; dest_vp[0].y=vp[i].y;}
if(vp[i].x > 460.8/2 && vp[i].y<328.8/2){dest_vp[1].x=vp[i].x; dest_vp[1].y=vp[i].y;}
if(vp[i].x < 460.8/2 && vp[i].y>328.8/2){dest_vp[2].x=vp[i].x; dest_vp[2].y=vp[i].y;}
if(vp[i].x > 460.8/2 && vp[i].y>328.8/2){dest_vp[3].x=vp[i].x; dest_vp[3].y=vp[i].y;}
}
}
int main(int argc char *argv[])
{
QCoreApplication a(argc argv);
namedWindow(“erzhihua“CV_WINDOW_NORMAL);
Mat imageSource=imread(“chessa1.jpg“);
cvtColor(imageSourceimageSourceCV_BGR2GRAY);
resize(imageSourceimageSourceSize(460.8328.8));
{
imshow(“yuanshi“imageSource);
waitKey(0);
Mat image;
imageSource.copyTo(image);
GaussianBlur(imageimageSize(99)1); //滤波
threshold(imageimage210255CV_THRESH_BINARY); //二值化
imshow(“erzhihua“image);
waitKey(0);
Mat element=getStructuringElement(2Size(99)); //膨胀腐蚀核
//morphologyEx(imageimageMORPH_OPENelement);
for(int i=0;i<5;i++)
{
erode(imageimageelement);
i++;
}
imshow(“fushi s“image);
Mat image1;
erode(imageimage1element);
element=getStructuringElement(2Size(6060)); //膨胀腐蚀核
dilate(imageimageelement);
dilate(image1image1element);
image1=image-image1;
imshow(“fushi s“image);
waitKey(0);
imshow(“bianjie“image1);
waitKey(0);
//寻找直线 边界定位也可以用findContours实现
vector lines;
HoughLines(image1lines1CV_PI/15017500);
Mat DrawLine=Mat::zeros(image1.size()CV_8UC1);
for(int i=0;i {
float rho=lines[i][0];
float theta=lines[i][1];
Point pt1pt2;
double a=cos(theta)b=sin(theta);
double x0=a*rhoy0=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(DrawLinept1pt2Scalar(255)1CV_AA);
}
imshow(“zhixian“DrawLine);
waitKey(0);
Point2f P1[4];
Point2f P2[4];
vectorcorners;
vectorcorners_sort;
goodFeaturesToTrack(DrawLinecorners40.110Mat()); //角点检测
sort_point(cornerscorners_sort);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-06-21 16:50 jiaozheng
目录 0 2018-06-21 16:47 jiaozhengin_debug
文件 5825536 2018-05-08 00:26 jiaozhengin_debugQt5Core.dll
文件 13222912 2018-05-08 00:26 jiaozhengin_debugQt5Cored.dll
文件 6052352 2018-01-16 19:32 jiaozhengin_debugQt5Gui.dll
文件 13869568 2018-01-16 19:32 jiaozhengin_debugQt5Guid.dll
文件 1228800 2018-01-16 19:31 jiaozhengin_debugQt5Network.dll
文件 43008 2018-01-18 13:58 jiaozhengin_debugQt5TextToSpeech.dll
文件 134144 2018-01-18 13:58 jiaozhengin_debugQt5TextToSpeechd.dll
文件 5588992 2018-01-16 19:40 jiaozhengin_debugQt5Widgets.dll
文件 11732992 2018-01-16 19:40 jiaozhengin_debugQt5Widgetsd.dll
文件 73877 2018-06-20 14:10 jiaozhengin_debugchessa1.jpg
文件 151958 2018-06-21 16:50 jiaozhengin_debugjiaozheng.bmp
文件 140288 2018-06-21 16:50 jiaozhengin_debugjiaozheng.exe
文件 3042640 2018-06-21 16:50 jiaozhengin_debugjiaozheng.ilk
文件 4878336 2018-06-21 16:50 jiaozhengin_debugjiaozheng.pdb
文件 1349632 2018-01-16 19:47 jiaozhengin_debugqwindows.dll
目录 0 2018-06-21 16:39 jiaozhengin_release
文件 73877 2018-06-20 14:10 jiaozhengin_release1.jpg
文件 31232 2018-06-20 14:13 jiaozhengin_releasejiaozheng.exe
文件 1262 2018-06-20 14:04 jiaozhengjiaozheng.pro
文件 23975 2018-06-21 16:50 jiaozhengjiaozheng.pro.user
文件 4231 2018-06-21 16:50 jiaozhengmain.cpp
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)