python - matplotlib.pyplot用4个通道保存二进制掩码(?)

时间:2018-05-27 09:32:13

标签: python matplotlib

我正在尝试将二进制掩码(即具有False和True值的数组)保存为.png文件。

然而,当使用matplotlib.pyplot这样做时,它会保存4个通道的图像,我不知道为什么。

例如保存图像:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

m = np.array([[False, True],
             [False, True]])

plt.imsave("mask.png", m, cmap=cm.gray)

然后再次阅读并打印形状:

plt.imread("mask.png").shape

给我:

(2,2,4)

任何原因以及如何将其保存为0/1值的普通灰度,以便形状基本上只是(2,2)?

1 个答案:

答案 0 :(得分:1)

我有同样的问题。它与matplotlib.pyplot有关。使用库PIL,png文件只有1个通道。

from PIL import Image
Image.fromarray(img).save('img.png')

如果要处理浮动图像,还必须先将其转换为uint8。例如这样的

img = 255 * img
img = img.astype(np.uint8)