OPENCV學習之霍夫變換

2021-10-02 10:35:33 字數 1867 閱讀 1149

霍夫線變換:

效果圖:

關於霍夫變換線變換的詳細介紹

以下是**:

int

main()

waitkey(0

);return(0);}

效果圖怎麼跟邊緣檢測的圖一樣?

line

(dst, pt1, pt2,

scalar(0

,0,255),

1, line_aa)

;

修改scalar()中的值顏色怎麼不改變?

霍夫圓變換

void

houghcircles

(inputarray image,outputarray circles,

int method,

double dp,

double mindist,

double param1=

100,

double param2=

100,

int minradius=0,

int maxradius=

0)

第乙個引數,inputarray型別的image,輸入影象,即源影象,需為8位的灰度單通道影象。

第二個引數,inputarray型別的circles,經過呼叫houghcircles函式後此引數儲存了檢測到的圓的輸出向量,每個向量由包含了3個元素的浮點向量(x, y, radius)表示。

第三個引數,int型別的method,即使用的檢測方法,目前opencv中就霍夫梯度法一種可以使用,它的識別符號為cv_hough_gradient,在此引數處填這個識別符號即可。

第四個引數,double型別的dp,用來檢測圓心的累加器影象的解析度於輸入影象之比的倒數,且此引數允許建立乙個比輸入影象解析度低的累加器。上述文字不好理解的話,來看例子吧。例如,如果dp= 1時,累加器和輸入影象具有相同的解析度。如果dp=2,累加器便有輸入影象一半那麼大的寬度和高度。

第五個引數,double型別的mindist,為霍夫變換檢測到的圓的圓心之間的最小距離,即讓我們的演算法能明顯區分的兩個不同圓之間的最小距離。這個引數如果太小的話,多個相鄰的圓可能被錯誤地檢測成了乙個重合的圓。反之,這個引數設定太大的話,某些圓就不能被檢測出來了。

第六個引數,double型別的param1,有預設值100。它是第三個引數method設定的檢測方法的對應的引數。對當前唯一的方法霍夫梯度法cv_hough_gradient,它表示傳遞給canny邊緣檢測運算元的高閾值,而低閾值為高閾值的一半。

第七個引數,double型別的param2,也有預設值100。它是第三個引數method設定的檢測方法的對應的引數。對當前唯一的方法霍夫梯度法cv_hough_gradient,它表示在檢測階段圓心的累加器閾值。它越小的話,就可以檢測到更多根本不存在的圓,而它越大的話,能通過檢測的圓就更加接近完美的圓形了。

第八個引數,int型別的minradius,有預設值0,表示圓半徑的最小值。

第九個引數,int型別的maxradius,也有預設值0,表示圓半徑的最大值。

例子如下:

int

main()

imshow

("效果圖"

, src)

;waitkey(0

);return(0);}

效果圖:

opencv學習之霍夫變換

原理部分參見 標準霍夫變換示例 opencv 1.cpp 定義控制台應用程式的入口點。include stdafx.h include include includeusing namespace cv using namespace std int main imshow 邊緣檢測後的圖 midi...

OpenCV 霍夫線變換 霍夫圓變換

關於霍夫變換在官方文件opencv249裡的描述如下 api如下 void houghlines inputarray image,outputarray lines,double rho,double theta,int threshold,double srn 0,double stn 0 vo...

opencv3學習之霍夫變換

霍夫變換分為霍夫線變換和霍夫圓變換。1.霍夫線變換分為三種 標準霍夫變換 多尺度霍夫變換 累計概率霍夫變換。前兩個由houghlines呼叫,第三個 由houghlinesp呼叫。霍夫線變換的原理 其實就是笛卡爾座標和極座標之間的轉換,公式 r x cos y sin 對於給定的x,y一點,對於笛卡...