python 如何获取轮廓内的所有坐标
时间: 2024-04-09 13:32:54 浏览: 43
要获取轮廓内的所有坐标,可以使用cv2.findContours函数找到轮廓,并使用cv2.drawContours函数将轮廓绘制在一个黑色图像上。然后,可以使用numpy库中的np.where函数找到图像中非零像素的坐标,这些坐标即为轮廓内的所有坐标。
下面是一个示例代码,演示如何获取轮廓内的所有坐标:
```python
import cv2
import numpy as np
# 读取图像
image = cv2.imread('image.jpg')
# 将图像转换为灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 二值化处理
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 创建一个黑色图像,大小与原始图像相同
black_image = np.zeros(image.shape[:2], dtype=np.uint8)
# 将轮廓绘制在黑色图像上
cv2.drawContours(black_image, contours, -1, 255, thickness=cv2.FILLED)
# 找到黑色图像中非零像素的坐标
contour_coords = np.where(black_image != 0)
# 输出轮廓内的所有坐标
for i in range(len(contour_coords[0])):
x = contour_coords[1][i]
y = contour_coords[0][i]
# 输出坐标
print("Coordinate: ({}, {})".format(x, y))
```
请注意,该代码假设图像中只有一个轮廓。如果图像中有多个轮廓,您可能需要根据自己的需求进行适当的处理。
阅读全文