OpenCV檢測圖片中的直線


一、概述

  案例:使用霍夫直線檢測簡單圖像中的直線

HoughLinesP(
InputArray src, // 輸入圖像,必須8-bit的灰度圖像
OutputArray lines, // 輸出的極坐標來表示直線(用vector數組定義)
double rho, // 生成極坐標時候的像素掃描步長(一般設置為1,也可根據實際情況嘗試)
double theta, //生成極坐標時候的角度步長,一般取值CV_PI/180
int threshold, // 閾值,只有獲得足夠交點的極坐標點才被看成是直線(同一條直線上的坐標點再霍夫空間會相交與一點)
double minLineLength=0;// 最小直線長度(可根據這個值檢測大直線和小直線)
double maxLineGap=0;// 最大間隔(間隔多大的兩個像素點之間會被算做一個直線)
)

 

二、代碼示例

 Mat src = imread(filePath);
    if(src.empty()){
        return;
    }
    imshow("src",src);//顯示原圖
    Mat dst;
    cvtColor(src,dst,COLOR_BGR2GRAY);//轉換灰度圖
    imshow("gray",dst);
    //邊緣檢測
    Canny(dst,dst,50,100,3,true);
    imshow("canny",dst);
    //霍夫直線檢測
    vector<Vec4f> plines;
    HoughLinesP(dst,plines,1,CV_PI/180,10,100,10);
    Mat matLine = Mat::zeros(src.size(),src.type());
    for(int i=0;i<plines.size();i++){
        Vec4f h = plines[i];
        line(matLine,Point(h[0],h[1]),Point(h[2],h[3]),Scalar(0,0,255),3,LINE_AA);
    }
    imshow("lines",matLine);

 

三、演示圖片(紅色的直線為檢測到的直線)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM