霍夫圆检测 python opencv 函数
时间: 2023-09-30 07:09:54 浏览: 155
霍夫圆检测(Hough Circle Detection)是一种经典的图像处理算法,用于在图像中寻找圆形目标。在Python中,可以使用OpenCV库方便地实现霍夫圆检测。下面是一个基本的示例代码:
```python
import cv2
import numpy as np
# 读取图像
img = cv2.imread('image.jpg',0)
# 中值滤波
img = cv2.medianBlur(img,5)
# 霍夫圆检测
circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20,
param1=50,param2=30,minRadius=0,maxRadius=0)
# 绘制检测到的圆
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# 绘制外圆
cv2.circle(img,(i[0],i[1]),i[2],(0,255,0),2)
# 绘制圆心
cv2.circle(img,(i[0],i[1]),2,(0,0,255),3)
# 显示图像
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例中,我们首先读取一张图像,然后对其进行中值滤波以去除噪声,接着进行霍夫圆检测。在检测到圆后,我们将其在图像上进行绘制,并显示出来。
`cv2.HoughCircles`是OpenCV中实现霍夫圆检测的函数之一,其用法如下:
```python
circles = cv2.HoughCircles(image, method, dp, minDist, param1=None, param2=None, minRadius=None, maxRadius=None)
```
其中,参数说明如下:
- `image`: 输入图像,必须为单通道灰度图像。
- `method`: 霍夫梯度方法,一般设为`cv2.HOUGH_GRADIENT`。
- `dp`: 圆心检测器分辨率与图像分辨率之比,一般设为1。
- `minDist`: 检测到的圆之间的最小距离,一般设为圆的直径大小。
- `param1`: Canny边缘检测器的高阈值,一般设为50。
- `param2`: 圆心检测阈值,一般设为30。
- `minRadius`: 检测到的圆的最小半径。
- `maxRadius`: 检测到的圆的最大半径。
该函数返回一个`circles`数组,其中每个元素为一个包含三个值的数组,分别表示圆心的x坐标、y坐标和半径大小。