Python实现圆形检测器:使用cv2HoughCircles()函数
发布时间:2023-12-11 16:49:24
使用 OpenCV 的cv2.HoughCircles()函数可以检测图像中的圆形。该函数使用霍夫圆变换来检测图像中的圆形,并返回圆心坐标和半径。
下面是一个实现圆形检测器的简单示例代码:
import cv2
import numpy as np
# 读取图像
image = cv2.imread('image.jpg', 0)
# 图像预处理:模糊处理和边缘检测
image = cv2.medianBlur(image, 5)
image = cv2.Canny(image, 50, 150)
# 使用cv2.HoughCircles()函数进行圆形检测
circles = cv2.HoughCircles(image, cv2.HOUGH_GRADIENT, 1, 20,
param1=50, param2=30, minRadius=0, maxRadius=0)
# 若成功检测到圆形则绘制结果
if circles is not None:
circles = np.uint16(np.around(circles))
for circle in circles[0]:
# 绘制圆心
cv2.circle(image, (circle[0], circle[1]), 2, (0, 255, 0), 3)
# 绘制圆形
cv2.circle(image, (circle[0], circle[1]), circle[2], (0, 0, 255), 3)
# 显示结果图像
cv2.imshow('Circle Detector', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
上述代码中,首先读取图像。然后,对图像进行预处理:使用中值滤波器进行模糊处理,然后使用Canny算子进行边缘检测。
接下来,使用cv2.HoughCircles()函数进行圆形检测。该函数接受输入图像、检测方法、像素分辨率、两个阈值、最小和最大半径等参数。通过调整这些参数,可以对检测结果进行调优。
如果成功检测到圆形,则使用循环遍历检测到的圆形,并使用cv2.circle()函数绘制圆心和圆形。
最后,使用cv2.imshow()函数显示结果图像,并等待按下键盘任意键关闭显示窗口。
注意:使用cv2.HoughCircles()函数时,输入图像应为灰度图像。
希望以上解答对您有帮助,如有其他疑问,请随时追问。
