我正在做一个深度学习项目,我将使用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.
我不知道为什么。
答案 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上的任何项目。