Contours Detection识别圆形并提取圆心列举出代码
时间: 2024-10-11 07:16:09 浏览: 50
轮廓检测是一种计算机视觉技术,用于从图像中识别和提取边缘线或轮廓,这对于诸如圆形物体定位这样的任务非常有用。在Python中,我们可以利用OpenCV库中的`findContours`函数以及`approxPolyDP`和`minEnclosingCircle`来识别和提取圆形,并找到其圆心。下面是一个简单的示例代码:
```python
import cv2
import numpy as np
def detect_circle(image_path):
# 读取图片
image = cv2.imread(image_path)
# 转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 进行二值化处理
_, threshold = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# 寻找轮廓
contours, _ = cv2.findContours(threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 提取圆形(假设轮廓接近圆形)
circular_contours = [cnt for cnt in contours if cv2.matchShapes(cv2.approxPolyDP(cnt, 0.01*cv2.arcLength(cnt, True), True), cv2.CIRCLE, 0.0) < 0.1]
# 对每个近似圆形计算圆心
circle_centers = [(cv2.moments(cnt)['m10']/cv2.moments(cnt)['m00'], cv2.moments(cnt)['m01']/cv2.moments(cnt)['m00']) for cnt in circular_contours]
return circle_centers, image
# 使用示例
circle_centers, result_image = detect_circle('image.jpg')
print(f"圆心坐标:{circle_centers}")
cv2.imshow("Detected Circles", result_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
阅读全文