欢迎访问宙启技术站
智能推送

Python中使用cv2HoughCircles()函数实现圆形形状的检测

发布时间:2023-12-11 16:53:07

cv2.HoughCircles()是OpenCV中用于检测圆形形状的函数。它使用霍夫变换来查找图像中的圆。

使用cv2.HoughCircles()函数需要以下几个参数:

- image:输入图像,必须是灰度图像(单通道)。

- method:霍夫圆检测方法,一般使用cv2.HOUGH_GRADIENT。

- dp:霍夫空间分辨率的倒数,例如dp=1表示与图像大小相同,dp=2表示二倍于图像大小。

- minDist:检测到的圆的最小间距,如果该值太小,可能会检测到重叠的圆。

- param1:用于Canny边缘检测的高阈值,一般为100。

- param2:用于圆心检测的累加器阈值,一般为30。

- minRadius:最小圆半径。

- maxRadius:最大圆半径。

下面是一个使用cv2.HoughCircles()函数的例子:

import cv2
import numpy as np

# 读取输入图像
image = cv2.imread('circles.jpg', 0)

# 预处理图像
gray = cv2.medianBlur(image, 5)
edges = cv2.Canny(gray, 50, 150)

# 检测圆
circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, dp=1, minDist=50, param1=100, param2=30, minRadius=0, maxRadius=0)

# 绘制检测到的圆
if circles is not None:
    circles = np.uint16(np.around(circles))
    for circle in circles[0, :]:
        center = (circle[0], circle[1])
        radius = circle[2]
        cv2.circle(image, center, radius, (0, 255, 0), 3)

# 显示结果
cv2.imshow('Circles', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

在上述例子中,首先读取输入图像并将其转换为灰度图像。然后使用中值滤波和Canny边缘检测对图像进行预处理。接下来,使用cv2.HoughCircles()函数检测圆,并将结果保存在circles变量中。最后,遍历检测到的圆,并使用cv2.circle()函数在原始图像上画出检测到的圆。最后显示结果。

需要注意的是,cv2.HoughCircles()函数的参数需要根据具体的应用场景进行调整,以获得 的圆形检测结果。