python提取出骨架线后,怎么才能获得骨架线上所有点的坐标呢
时间: 2023-06-11 16:08:46 浏览: 160
在Python中,可以使用OpenCV库进行骨架提取。提取出骨架线后,可以使用scikit-image库的`skeletonize`函数得到骨架线的像素坐标。然后,可以使用numpy库的`argwhere`函数获取所有非零元素的坐标,即骨架线上所有点的坐标。
下面是一个示例代码:
```python
import cv2
from skimage.morphology import skeletonize
import numpy as np
# 读取图像并二值化
img = cv2.imread('image.png', cv2.IMREAD_GRAYSCALE)
_, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
# 提取骨架线
skeleton = skeletonize(thresh)
# 获取骨架线上所有点的坐标
indices = np.argwhere(skeleton)
points = [tuple(index[::-1]) for index in indices]
print(points)
```
其中,`image.png`是要提取骨架线的图像文件名。`cv2.imread`函数用于读取图像,`cv2.threshold`函数用于二值化图像。`skeletonize`函数用于提取骨架线,`np.argwhere`函数用于获取非零元素的坐标,`tuple(index[::-1])`将获取到的行列坐标转换为(x,y)坐标。执行以上代码后,`points`变量将保存骨架线上所有点的坐标。
阅读全文