OpenCV 霍夫圓實現簡單的圓檢測

2021-08-25 19:22:30 字數 1542 閱讀 7637

圓周上任意三點所確定的圓,經hough變換後在三維引數空間應對應一點。遍歷圓周上所有點,任意三個點所確定的候選圓進行

投票。遍歷結束後,得票數最高點(理論上圓周上任意三點確定的圓在hough變換後均對應三維引數空間中的同一點)所確定的圓

即為該圓周上,絕大多數點所確定的圓(以下稱為當選圓),即絕大多數點均在該當選圓的圓周上,以此確定該圓。

//中值濾波

medianblur(src, medianimg, 3);

//灰度化處理

cvtcolor(medianimg, grayimg, cv_bgr2gray);

//霍夫圓檢測

vector

pcircles;

//輸入,輸出,方法(型別)-hough_gradient,dp(dp=1時表示霍夫空間與輸入影象空間的大小一致,dp=2時霍夫空間是輸入影象空間的一半,以此類推),最短距離-可以分辨是兩個圓否 則認為是同心圓 ,邊緣檢測時使用canny運算元的高閾值,中心點累加器閾值—候選圓心(霍夫空間內累加和大於該閾值的點就對應於圓心),檢測到圓的最小半徑,檢測到圓的的最大半徑

houghcircles(grayimg,pcircles,cv_hough_gradient,1,10,100,30,5,50);

//在原圖畫出圓心和圓

for (size_t i = 0; i < pcircles.size(); i++)//size_t 無符號整數 unsigned int

namedwindow("circles", 0);

imshow("circles", src);

waitkey();

return

0;}檢測結果和引數設定有很大的關係,不同影象的圓檢測最好根據具體情況分析

原圖

效果圖

opencv 霍夫圓變換

參考 1 官方文件api 2 d6 d00 tutorial py root.html 官方英文教程 3 4 高階教程 5 官方英文教程 6 7 8 opencv論壇 9 官方github 10 注 安裝的版本 opencv python 3.3.0 cp36 cp36m win amd64.whl...

OpenCV 霍夫線變換 霍夫圓變換

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

OpenCV 霍夫變換圓檢測

在直角座標系下,圓的方程表示為 其中,r是圓的半徑,a,b 是圓心座標。那麼換一種表達方式 因為在直角座標系下,圓上的所有點都滿足圓的方程,所以直角座標系下的乙個圓對應到abr座標系下就是乙個點。直角座標系下經過乙個點的所有圓在abr座標系下就是一條三維曲線。那麼,直角座標系下圓上的所有點在abr座...