opencv圆形检测代码
时间: 2024-09-23 09:08:11 浏览: 75
在OpenCV库中,可以使用HoughCircles函数来检测图像中的圆形。这是一个基本步骤:
1. **读取图像**:首先从文件或摄像头捕获图像,并转换成灰度图像,因为HoughCircles通常在灰度图像上效果更好。
```python
import cv2
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)
```
2. **高斯模糊**:为了减少噪声影响,可以对图像应用高斯滤波器。
```python
image = cv2.GaussianBlur(image, (5, 5), 0)
```
3. **边缘检测**:通过Canny算子或其他边缘检测算法找到轮廓。
```python
edges = cv2.Canny(image, low_threshold=50, high_threshold=150)
```
4. **霍夫圆变换**:利用HoughCircles函数寻找圆形候选点。
```python
circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, dp=1, minDist=20, param1=50, param2=30, minRadius=0, maxRadius=0)
```
`dp`是一个比例因子,`minDist`控制最小距离,`param1`和`param2`调整圆的检测敏感度。
5. **处理结果**:`circles`是一个二维数组,包含每个圆形的中心坐标和半径。如果发现圆形,将它们画出来并显示在原图上。
```python
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)
else:
print("No circles found.")
cv2.imshow("Detected Circles", image)
cv2.waitKey(0)
```
阅读全文