官网 https://docs.opencv.org/3.4.1/da/d53/tutorial_py_houghcircles.html
以前自己也了解过了,https://blog.csdn.net/weixin_42555985/article/details/93467432
这里为了确保资料完成性,就按照官网内容再了解一下。
圆形的数据表达式为 (x−xcenter)2 + (y−ycenter)2=r2,(xcenter,ycenter)是圆心,r是圆的直径。因为有3个参数,导致霍夫曼变换累加器是3D的,这样效率就会很低。
在opencv中使用了一个比较巧妙的方法,霍夫曼梯度方法,它利用了边界的梯度信息。
该函数为cv.HoughCircles()。
测试代码如下
import numpy as np
import cv2 as cv
img = cv.imread('opencv-logo-white.png',0)
img = cv.medianBlur(img,5)
cimg = cv.cvtColor(img,cv.COLOR_GRAY2BGR)
circles = cv.HoughCircles(img,cv.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
cv.circle(cimg,(i[0],i[1]),i[2],(0,255,0)