绘制二值图的轮廓和中心
时间: 2023-06-16 13:06:23 浏览: 50
要绘制二值图的轮廓和中心,可以使用OpenCV库中的函数来实现。以下是一个Python示例代码:
```python
import cv2
# 读取二值图像
img = cv2.imread('binary_image.png', cv2.IMREAD_GRAYSCALE)
# 找到轮廓
contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 绘制轮廓
contour_img = cv2.drawContours(img, contours, -1, (0, 255, 0), 2)
# 计算中心点
moments = cv2.moments(contours[0])
cx = int(moments['m10'] / moments['m00'])
cy = int(moments['m01'] / moments['m00'])
# 绘制中心点
center_img = cv2.circle(img, (cx, cy), 5, (0, 0, 255), -1)
# 显示结果图像
cv2.imshow('Contour Image', contour_img)
cv2.imshow('Center Image', center_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这个示例代码中,我们首先使用`cv2.imread()`函数读取一个二值图像,然后使用`cv2.findContours()`函数找到轮廓。`cv2.findContours()`函数返回一个轮廓列表和一个层次结构。
接下来,我们使用`cv2.drawContours()`函数绘制轮廓。这个函数需要传递原始图像、轮廓列表、轮廓序号、颜色和线宽作为参数。我们将轮廓颜色设置为绿色,线宽设置为2。
然后,我们使用`cv2.moments()`函数计算轮廓的矩,以获取轮廓的中心点。我们使用这些矩来计算中心点的x和y坐标,然后使用`cv2.circle()`函数在原始图像上绘制中心点。我们将中心点颜色设置为红色,半径设置为5。
最后,我们使用`cv2.imshow()`函数显示结果图像,并使用`cv2.waitKey()`函数等待用户按下任意键。最后,我们使用`cv2.destroyAllWindows()`函数关闭所有窗口。