2017-06-02 48 views
0

我得到了很多使用的圖像Hough變換圓檢測算法中圈。如何使這種檢測更準確?檢測哈夫圓檢測刪除不必要的圈子

圖像顯示圓。

原始圖片

下面的代碼是用來

import cv2 
import numpy as np 

img = cv2.imread('test_c.jpg',0) 

img = cv2.medianBlur(img,5) 

cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) 

circles=cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0) 

circles = np.uint16(np.around(circles)) 

for i in circles[0,:]: 

    # draw the outer circle 
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2) 
    # draw the center of the circle 
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3) 

cv2.imshow('detected circles',cimg) 

cv2.waitKey(0) 

cv2.destroyAllWindows()` 
+2

你在哪裏複製代碼?你甚至讀過它嗎?你認爲這些參數有什麼好處? minRadius,maxRadius? – Piglet

回答

0

您都面臨這個問題,因爲你不知道霍夫如何改變作品因爲你既沒有仔細閱讀最有可能在網上某處找到的代碼,也沒有提到OpenCV參考文件。

https://en.wikipedia.org/wiki/Circle_Hough_Transform

http://docs.opencv.org/2.4/modules/imgproc/doc/feature_detection.html?highlight=houghcircles

你必須限制半徑。由於Hough變換或多或少是一種強力方法,這非常重要。這大大減少計算時間,當然你可以,也應該使用這個只得到你正在尋找...

半徑的圓圈通過設置圈之間會避免多個結果一圈的最小距離。

一如既往的知識是成功的關鍵。

+0

請您介紹一下霍夫圓檢測算法的工作原理。是否有更好的方法來檢測圖像中的圓圈更準確,即它不會給出比現在更多的圓圈數量。並感謝您的回答和非常需要的建議。 –

+0

@ShubhamSingh我鏈接的維基百科文章的哪一部分和您可以在網上找到的無數其他資源你不明白?如果你甚至不打算讀到他們給你的東西,那麼詢問人們解釋並不是很禮貌...... – Piglet