用來做直線檢測
前提條件是邊緣檢測已經完成,一般用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 變換,我們將...