python opencv 圆形检测
时间: 2023-10-10 22:13:56 浏览: 105
使用OpenCV进行圆形检测可以使用霍夫变换。霍夫变换是一种用于检测几何形状的技术,它可以检测出圆形,直线等几何形状。
以下是一个简单的Python代码示例,用于在图像中检测圆形:
```
import cv2
import numpy as np
# Load image
img = cv2.imread('circles.jpg', cv2.IMREAD_GRAYSCALE)
# Blur image
img_blur = cv2.medianBlur(img, 5)
# Detect circles using HoughCircles
circles = cv2.HoughCircles(img_blur, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)
# Draw detected circles
if circles is not None:
circles = np.uint16(np.around(circles))
for i in circles[0, :]:
# Draw outer circle
cv2.circle(img, (i[0], i[1]), i[2], (0, 255, 0), 2)
# Draw center of circle
cv2.circle(img, (i[0], i[1]), 2, (0, 0, 255), 3)
# Show image
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们首先加载图像,并对其进行模糊处理,以减少噪声。然后,我们使用cv2.HoughCircles函数检测圆形。参数param1和param2分别是Canny边缘检测器的两个阈值,minRadius和maxRadius是检测到的圆形的半径范围。
最后,我们使用cv2.circle函数在图像中绘制检测到的圆形和圆心。如果没有检测到圆形,circles将为None。
阅读全文