import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
img = cv.imread("../SampleImages/steelpipes.jpg")
print(img.shape)
plt.imshow(img[:,:,::-1])
#轉(zhuǎn)為二值圖
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
plt.imshow(gray, cmap = plt.cm.gray)
#Canny邊緣檢測(此步驟可以不做)
edges = cv.Canny(gray, 70, 120)
plt.imshow(edges, plt.cm.gray)
#霍夫圓檢測
#cv.HoughCircles(image,method,dp,minDist[,circles[,param1[,param2[,minRadius[,maxRadius]]]]])
#image:輸入圖像,8bit單通道圖像。
#method:檢測方法,當前有cv2.HOUGH_GRADIENT和cv2.HOUGH_GRADIENT_ALT 2種方法,后者是前者的改進方法。
#dp:檢測圓心的累加器精度和圖像精度比的倒數(shù),比如dp=1時累加器和輸入圖像有相同的分辨率,dp=2時累加器是輸入圖像一半大的寬高;method=cv2.HOUGH_GRADIENT_ALT時推薦設(shè)置dp=1.5。
#minDist:檢測到圓心的間距,設(shè)置的越小可能檢測的圓形越多,設(shè)置的越大可能會錯過一些圓形的檢測。
#param1:特定方法參數(shù),和method配合;當method=cv2.HOUGH_GRADIENT或method=cv2.HOUGH_GRADIENT_ALT時,該參數(shù)是canny檢測的高閾值,低閾值是該參數(shù)的一半;method=cv2.HOUGH_GRADIENT_ALT時,內(nèi)部使用Scharr計算圖像梯度,這個值通常要設(shè)置得更大。
#param2:特定方法參數(shù),和method配合;當method=cv2.OUGH_GRADIENT,它表示檢測階段圓心的累加器閾值,越小就會檢測到更多的圓,越大能通過檢測的圓就更加精確。當method=cv2.HOUGH_GRADIENT_ALT時,該參數(shù)可以看做是圓的“完美性”度量,它越接近1算法選擇的圓形形狀越好,一般可以設(shè)置在0.9。如果想要更好地檢測小圓,可以設(shè)置在0.85、0.8甚至更小,通過限制搜索范圍[minRadius,maxRadius]可以避免出現(xiàn)許多假圓。
#minRadius:最小圓半徑。
#maxRadius:最大圓半徑,如果設(shè)置為<=0,使用最大圖像尺寸;如果<0時且method=cv2.HOUGH_GRADIENT用來查找圓心而忽略半徑的查找,method=cv2.HOUGH_GRADIENT_ALT不受影響,始終會去找半徑。
#circles:返回的圓形的點,是一個三維數(shù)組,HOUGH_GRADIENT和HOUGH_GRADIENT_ALT 2種不同方法返回的圓形數(shù)組形式有差異
#參考資料:https://blog.csdn.net/juzicode00/article/details/122263456
circles = cv.HoughCircles(edges, cv.HOUGH_GRADIENT, 1, 200, param1=100, param2=50, minRadius=20, maxRadius=200)
circles = np.uint16(np.around(circles))
#繪制結(jié)果到原圖
for c in circles[0, :]:
#繪制圓周
cv.circle(img, (c[0], c[1]), c[2], (0,255,0), 2)
#繪制圓心
cv.circle(img, (c[0], c[1]), 2, (0,0,255), 3)
plt.imshow(img[:,:,::-1])
?
文章來源:http://www.zghlxwxcb.cn/news/detail-689409.html
?
文章來源地址http://www.zghlxwxcb.cn/news/detail-689409.html
到了這里,關(guān)于Python Opencv實踐 - 霍夫圓檢測(Hough Circles)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!