尝试显示从RGB转换的灰度图像时出错

时间:2020-10-03 18:29:33

标签: python tensorflow matplotlib image-processing

我正在做一个深度学习项目,我将使用SVHN数据集训练分类器。

最初,我分别具有形状为(73257、32、32、3)和(26032、32、32、3)的train_images和test_images,通常使用plt.imshow()显示它们。

我使用以下代码将图像转换为灰度:

f = lambda img: tf.expand_dims(np.average(img, axis=-1), axis=-1).numpy()

train_images = f(train_images)
test_images = f(test_images)

我也尝试过:

train_images = tf.image.rgb_to_grayscale(train_images).numpy()
test_images = tf.image.rgb_to_grayscale(test_images).numpy()

在两种情况下,输出都会将形状为(32、32、1)的图像作为每个train_images,test_images中的项-因此,新形状为(73257、32、32、3)和(26032, 32、32、1)。

但是,由于某些原因,当我尝试显示这些新的灰度图像时,出现以下错误:TypeError: Invalid dimensions for image data.

我不知道为什么。

1 个答案:

答案 0 :(得分:0)

我通过使用以下函数将其转换为灰度来解决了这个问题:

f = lambda img: np.mean(img, axis=-1, keepdims=True)

然后使用以下方法显示图像:

img = np.squeeze(array)
plt.imshow(img, cmap='Greys')

数组是train_images或test_images上的任何项目。