基于opencv的二维码畸变矫正QT程序


本代码,基于opencv寻找二维码的四个顶点,并通过仿射变换对二维码进行畸变矫正。不须标定,简单易用。
资源截图
代码片段和文件信息
#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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)