opencv 霍夫變換 直線檢測

2021-09-23 13:37:26 字數 1064 閱讀 3882

用來做直線檢測

前提條件是邊緣檢測已經完成,一般用canny來做。

cv::houghlinesp(

inputarray src, // 輸入影象,必須8-bit的灰度影象

outputarray lines, // 輸出的極座標來表示直線

double rho, // 生成極座標時候的畫素掃瞄步長,一般是1

double theta, //生成極座標時候的角度步長,一般取值cv_pi/180

int threshold, // 閾值,只有獲得足夠交點的極座標點才被看成是直線,一般可以是10

double minlinelength=0;// 最小直線長度

double maxlinegap=0;// 最大間隔

)

#include#include#includeusing namespace std;

using namespace cv;

mat src, dst, gray_src;

int main(int argc, char** ar**)

namedwindow("input", window_autosize);

namedwindow("output", window_autosize);

imshow("input", src);

canny(src, gray_src, 100, 200);

imshow("canny-output", gray_src); //邊緣處理後的

cvtcolor(gray_src, dst, cv_gray2bgr);

//霍夫

vectorplines;//定義乙個浮點數,將霍夫變換的出來的結果放在這個陣列中

houghlinesp(gray_src, plines, 1, cv_pi / 180.0, 10, 0, 10);

for (int i = 0; i < plines.size(); i++)

imshow("output", dst);

waitkey(0);

return 0;

}

OpenCV 霍夫變換直線檢測

霍夫直線檢測的基本原理在於利用點與線的對偶性。在直角座標系下,一條直線的方程可以用點斜式表示 但是這種表達方式無法表示斜率無窮大的情況 直線垂直於x軸 因此,轉化到極座標系下 可以變換為 其中,因此,在直角座標系下的乙個點 也就是說,直角座標系下的乙個點對應極座標系下的一條曲線。反過來也是成立的。霍...

opencv之霍夫變換直線檢測

霍夫變換之直線檢測 x cos x cos theta x cos y sin y sin theta y sin 2 x2 y2 2 x 2 y 2 2 x2 y2 tan y x x 0 tan theta y x x 0 tan y x x 0 檢測原理 兩點確定一條直線,通過一點可以確定無數...

Opencv 霍夫變換 直線

注意 下面的解釋屬於bradski和kaehler 的 學習opencv 一書。hough line變換是用於檢測直線的變換。為了應用變換,首先需要邊緣檢測預處理。如你所知,影象空間中的一行可以用兩個變數表示。例如 在笛卡爾座標系中 引數 m,b 在極座標系中 引數 r,對於hough 變換,我們將...