今天我们介绍一个opencv 函数cv2.HoughCircles(),此函数主要用于检测图像中的圆形,我们知道3点可以画一个圆,学习CAD的同学肯定知道,opencv使用霍夫梯度的方法进行圆的检测
首先对图像进行canny边缘检测,对边缘中的每一个非0点,通过Sobel算法计算局部梯度。那么计算得到的梯度方向,实际上就是圆切线的法线。三条法线即可确定一个圆心,同理在累加器中对圆心通过的法线进行累加,就得到了圆环的判定。
cv2.HoughCircles函数:
cv2.HoughCircles(image, method, dp, minDist, circles, param1, param2, minRadius, maxRadius)
1:image为输入图像,需要灰度图
2:method为检测方法:CV_HOUGH_GRADIENT
3:dp为检测内侧圆心的累加器图像的分辨率于输入图像之比的倒数,
如dp=1,累加器和输入图像具有相同的分辨率
如果dp=2,累计器便有输入图像一半的分辨率
4:minDist表示两个圆之间圆心的最小距离
5:param1默认值100,它是method设置的检测方法的对应的参数,
当前唯一的方法霍夫梯度法cv2.HOUGH_GRADIENT,
它表示传递给canny边缘检测算子的高阈值,而低阈值为高阈值的一半
6:param2默认值100,它是method设置的检测方法的对应的参数,
当前唯一的方法霍夫梯度法cv2.