• 霍夫变换直线检测


    一、霍夫变换直线检测:

    1.众所周知, 一条直线在图像二维空间可由两个变量表示. 如:
          <1>在笛卡尔坐标系: 可由参数: 斜率和截距(m,b)表示。 
          <2>在极坐标系: 可由参数: 极径和极角(r, θ)表示。

     可以用极坐标系来表示直线. 因此, 直线的表达式可为:     

                           

     化简便可得到:

                         

     

     

     

     

     有经验的人可以使用:

     

     代码:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <math.h>
    
    using namespace cv;
    using namespace std;
    
    int main(int argc, char** argv) {
        Mat src, src_gray, dst;
        src = imread("L:/7.png");
        if (!src.data) {
            printf("could not load image...
    ");
            return -1;
        }
        char INPUT_TITLE[] = "input image";
        char OUTPUT_TITLE[] = "hough-line-detection";
        namedWindow(INPUT_TITLE, CV_WINDOW_AUTOSIZE);
        namedWindow(OUTPUT_TITLE, CV_WINDOW_AUTOSIZE);
        imshow(INPUT_TITLE, src);
    
        Canny(src, src_gray, 100, 200);
        cvtColor(src_gray, dst, CV_GRAY2BGR);
        imshow("edge_image", src_gray);
         
    
        vector<Vec4f> plines;        //定义的一个数组
        HoughLinesP(src_gray, plines, 1, CV_PI / 180.0, 10, 0, 10);
        //
        Scalar color = Scalar(0, 0, 255);
        for (size_t i = 0; i < plines.size(); i++)
        {
            Vec4f hline = plines[i];
            line(dst, Point(hline[0], hline[1]), Point(hline[2], hline[3]), color, 3,LINE_AA );
            //Poinnt为起始点位置, 颜色,3为线条粗,LINE_AA为线条类型。
            /*  线条类型:
                LINE_8 (or 0) - 8-connected line(8邻接)连接 线。
                 LINE_4 - 4-connected line(4邻接)连接线。
                LINE_AA - antialiased 线条。
            */
    
        }
        
        imshow(OUTPUT_TITLE, dst);
        waitKey(0);
        return 0;
    }

    实验结果:

    输入                                       边缘检测                                 霍夫直线检测

  • 相关阅读:
    杀死JS错误提示
    年月日时分秒加星期即时显示的JS日期时间特效
    用JS自动缩小超出大小的图片
    实现简单的FAQ折叠效果
    复制本贴地址传给QQ/MSN好友的代码
    java初学者笔记总结day1
    java初学者笔记总结day2
    java初学者笔记总结day3
    IIS7.5应用程序池集成模式和经典模式的区别介绍
    div模拟textarea文本域轻松实现高度自适应
  • 原文地址:https://www.cnblogs.com/Jack-Elvis/p/11454127.html
Copyright © 2020-2023  润新知