霍夫圆检测
cv2.HoughCircles(image, method, dp, minDist, param1, param2, minRadius, maxRadius)
image: 输入图像(二值图像或减员检测后的图像)
method: 检测方法
minDist: 检测到圆心之间的最小距离
circles: 返回结果 (x,y,r)
param1: canny边缘函数的高阈值
param2: 圆心检测阈值
minRadius: 能检测到的最小圆半径
maxRadius: 能检测到的最大圆半径
函数返回值 circles: 返回结果 (x,y,r)
代码
import cv2
import numpy as np
img = cv2.imread('F:\coin.jpg')
img = cv2.medianBlur(img,5)
edges = cv2.Canny(img, 50 ,150)
cv2.imshow('Canny',edges)
# 圆检测
circles = cv2.HoughCircles(edges,cv2.HOUGH_GRADIENT,1,20,
param1=50,param2=30,minRadius=10,maxRadius=100)
circles = np.uint16(np.around(circles))
print(circles)
for i in circles[0, :]:
# draw the outer circle
cv2.circle(img,(i[0],i[1]),i[2],(0,255,0),2)
# draw the center of the circle
cv2.circle(img,(i[0],i[1]),2,(0,0,255),-1)
cv2.imshow('circles',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果显示(效果不是很好)