示例代码:
import numpy as np
from skimage import measure
grid = np.array([[1, 1, 1, 1, 1], [1, 0, 0, 0, 1], [1, 0, 1, 0, 1], [1, 0, 0, 0, 1], [1, 1, 1, 1, 1]])
contours = measure.find_contours(grid, 0.5)
for contour in contours:
print(contour)
输出结果:
[[0.5 0.5]
[1. 0.5]
[1. 1. ]
[1. 2. ]
[0.5 2.5]
[0.5 4. ]
[1. 4.5]
[2. 4.5]
[2.5 4. ]
[2.5 2.5]
[2. 2. ]
[1. 2. ]]
[[2.5 2.5]
[3. 2.5]
[3. 1. ]
[3. 0.5]
[2.5 0. ]
[2. 0. ]
[1. 0.5]
[0.5 1. ]]
说明:
该问题使用了Python中的skimage库中的measure.find_contours函数进行解决,该函数可以在二维数组中找到输入的某个值之上或之下的轮廓线。具体来说,该函数将会对输入的值进行插值,输出一组具有一定精度的连接顶点坐标,并可选的输出轮廓线上的插值点的值。至于精度和线段顶点的数量,会根据输入网格的大小、形状和值的容限而变化。
所以,对于输入的原始网格数组,其值域为0或1,通过调用该函数,即