使用cv2HoughCircles()函数在Python中进行圆形形状检测
发布时间:2023-12-11 16:54:18
HoughCircles()函数是OpenCV库中的一个函数,用于在图像中检测圆形形状。下面是一个使用cv2.HoughCircles()函数检测圆形的简单示例。
首先,我们需要导入必要的库文件cv2和numpy:
import cv2 import numpy as np
然后,我们需要加载并预处理图像。在本例中,我们将使用一张包含圆形的简单图像,名为"circles.png"。在加载图像之后,我们将使用灰度图像和高斯模糊进行预处理,以便更好地检测圆形。
# 加载图像
image = cv2.imread('circles.png')
# 将图像转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 对灰度图像应用高斯模糊
gray = cv2.GaussianBlur(gray, (5, 5), 0)
接下来,我们将使用cv2.HoughCircles()函数进行圆形检测。该函数有几个参数,其中最重要的是minRadius和maxRadius,用于指定圆形的最小和最大半径范围。其他参数包括dp、minDist和param1等,可根据需求进行调整。
# 使用cv2.HoughCircles()函数检测圆形 circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, dp=1, minDist=20, param1=50, param2=30, minRadius=0, maxRadius=0)
最后,我们将在图像上绘制检测到的圆形,以便在可视化结果中查看。在绘制圆形之前,我们可以使用cv2.round()函数对检测到的圆形的坐标和半径进行舍入运算,以便在图像上正确绘制圆形。
# 绘制检测到的圆形
if circles is not None:
circles = np.round(circles[0, :]).astype(int)
for (x, y, r) in circles:
cv2.circle(image, (x, y), r, (0, 255, 0), 2)
# 显示图像
cv2.imshow("Circle Detection", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
整个代码如下:
import cv2
import numpy as np
# 加载图像
image = cv2.imread('circles.png')
# 将图像转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 对灰度图像应用高斯模糊
gray = cv2.GaussianBlur(gray, (5, 5), 0)
# 使用cv2.HoughCircles()函数检测圆形
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, dp=1, minDist=20, param1=50, param2=30, minRadius=0, maxRadius=0)
# 绘制检测到的圆形
if circles is not None:
circles = np.round(circles[0, :]).astype(int)
for (x, y, r) in circles:
cv2.circle(image, (x, y), r, (0, 255, 0), 2)
# 显示图像
cv2.imshow("Circle Detection", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
注意:在使用cv2.HoughCircles()函数之前,需要确保已经安装好了OpenCV库,并且正确安装了numpy库。
