我正在尝试将二进制掩码(即具有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)?
答案 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)