我提取了一个numpy二进制文件的轮廓(仅包含0s和1s数组)。之后,我要对其进行一些计算,这将稍微改变轮廓的位置。
现在我想将此轮廓数组转换回一个numpy二进制图像。
假设我有一个像这样的数组。
import numpy as np
x = np.array([[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.],
[0., 0., 1., 1., 0., 0.],
[0., 0., 1., 1., 0., 0.],
[0., 0., 1., 1., 0., 0.],
[0., 0., 1., 1., 0., 0.],
[0., 0., 0., 0., 0., 0.],
[0., 0., 0., 0., 0., 0.]])
找到轮廓会给我,
from skimage import measure
contours = measure.find_contours(a, 0.)
k = np.zeros(a.shape).astype('float32')
for x in contours:
for i, j in x:
k[int(i)][int(j)] = 1.
print(k)
\\Output
array([[0., 0., 0., 0., 0., 0.],
[0., 0., 1., 1., 0., 0.],
[0., 1., 0., 0., 1., 0.],
[0., 1., 0., 0., 1., 0.],
[0., 1., 0., 0., 1., 0.],
[0., 1., 0., 0., 1., 0.],
[0., 0., 1., 1., 0., 0.],
[0., 0., 0., 0., 0., 0.]], dtype=float32)
是否有办法从该轮廓返回到x?
我不能同时添加它们,因为我将稍稍更改此轮廓数组。