我想以真实灰度保存MNIST数据集中的图片。通过“真实灰度”,我假设,如果我从硬盘加载图像并将它们加载到keras,它们将只有一个通道(而不是3个)。但是,如果我用plt.imsave('file.png',train_images[i],cmap = 'gray')
保存图像,然后加载它们,则它们具有3个通道,因此我的带有神经网络的小程序需要一个通道(keras,张量流)输入,因此不起作用。或者我想让程序加载图像,但是我不应该说它们是灰度的,我希望程序自己确定它
答案 0 :(得分:0)
您可能知道这一点,但是灰度图像只是2D数字数组,通常在[0,1]或[0,255]范围内。因此,您可以通过检查尺寸数来检查图像是否为灰度:如果图像为2,则为灰度;如果图像为2,则为灰度。如果它有3,则为颜色。 (如果最后一个维度的深度为4,则它具有R,G,B通道以及不透明度信息。)
问题似乎是您正在应用颜色图并保存具有4个通道(RGBA)的伪彩色图像。我认为您有几种选择:
np.save()
保存图像数组。pillow
使用PIL
。假设train_images[i]
是一个二维数组,其值在[0,1]中,则可以这样做:
from PIL import Image
# Make it unsigned integers:
data = (train_image[i] * 255).astype(np.uint8)
# Make an Image object and save it:
Image.fromarray(data).save('test.png')