opencv识别空心圆代码
时间: 2023-07-30 15:06:17 浏览: 258
以下是使用OpenCV识别空心圆的示例代码:
```python
import cv2
import numpy as np
# 读取图片
img = cv2.imread('circle_image.jpg', 0)
# 高斯滤波
img = cv2.GaussianBlur(img, (5, 5), 0)
# 阈值处理
ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 遍历轮廓
for i in range(len(contours)):
# 拟合圆形
if len(contours[i]) > 5:
(x, y), radius = cv2.minEnclosingCircle(contours[i])
center = (int(x), int(y))
radius = int(radius)
# 绘制圆形
cv2.circle(img, center, radius, (0, 255, 0), 2)
# 显示结果
cv2.imshow('Circle Detection', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
说明:
1. `cv2.imread('circle_image.jpg', 0)` 读取灰度图像。
2. `cv2.GaussianBlur(img, (5, 5), 0)` 对图像进行高斯滤波,以平滑边缘。
3. `cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)` 对图像进行阈值处理,将图像转换为二值图像。
4. `cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)` 查找图像中的轮廓。
5. 使用 `cv2.minEnclosingCircle()` 拟合圆形。
6. 绘制圆形并显示结果。
阅读全文