1. 程式人生 > >OpenCV中Hough檢測直線中pt1、pt2點的確定

OpenCV中Hough檢測直線中pt1、pt2點的確定

學習hough變換,一般會看到pt1.x = cvRound(x0 + 1000*(-b));這段程式碼。一開始可能不是很好理解。查閱了資料和原理,現在寫下來分享。

這裡的pt1和pt2是一條直線的兩個端點,這裡已知下圖中的rh0 和θ,現在只需要求圖中“任意”兩點, 使用OpenCV的cvLine函式畫出pt1點到pt2的直線 。

看看下圖 就明白這裡1000什麼的是為什麼了。

0_1325123993yZ4k.gif

這裡是取了點(x0,y0)在直線上上下1000的距離,那麼用cvLine畫出來的線段就是從pt1 -> pt2的了。那麼pt1->pt2的直線距離就是2000。可以取其他的距離,不一定去1000,如600也可以,具體的數字可以自己定義。

1.這個地方也許會出現檢測出來的線段長度比pt1->pt2還大,即包含了我們畫的線段 , 這是肯定的。

2. 還會出現本來線段沒有pt1->pt2這麼長,那麼我們畫的就會過長了。 也是肯定會出現的情況。

因為:CV_HOUGH_STANDARD方法 只能得出rh0 和 θ的值。 這兩個值只能確定直線,而不能確定線段是從哪開始到哪結束。

此方法標準型的霍夫變換檢測只能確定線段對應的直線。如果你想得到一條直線的兩個端點的具體座標,可以使用CV_HOUGH_PROBABILISTIC(概率型霍夫變換).