Matplotlib无法绘制单通道或灰度图像像素。

5

我正在处理一个与图像有关的问题,当我需要在网络训练之前检查图像绘制时,突然遇到了一些困难。我发现了一些奇怪的东西。我以为我的 ImageDataGenerator 没有正常工作,但实际上是 matplotlib 出了问题。我正在处理灰度图像。

如果您使用

data4 = np.random.randint(low=0,high=255,size=(137,236,4))
data3 = np.random.randint(low=0,high=255,size=(137,236,3))
data1 = np.random.randint(low=0,high=255,size=(137,236,1))

pyplot.imshow(data4)
pyplot.imshow(data3)

当你使用pyplot.imshow(data1)时,它可以很好地绘制随机噪声,但是它会抛出一个错误:Invalid shape (137, 236, 1) for image data

但是同样的操作对于

data = np.random.randint(low=0,high=255,size=(137,236))
pyplot.imshow(data)

它的绘图非常好。为什么会发生这种情况?是什么导致在使用c=1时pyplot出错?


1个回答

7

Matplotlib可以绘制单通道图像。根据imshow的文档,输入X是:

X:类似数组或PIL图像。支持的数组形状为:

  • (M, N):具有标量数据的图像。使用颜色映射可视化数据。

  • (M, N, 3):具有RGB值(0-1浮点数或0-255整数)的图像。

  • (M, N, 4):具有RGBA值(0-1浮点数或0-255整数)的图像,即包括透明度。

前两个维度(M, N)定义了图像的行和列。

超出范围的RGB(A)值会被剪切。

因此,假设您的data3是RGB图像,data4是RGBA图像,data是单通道图像,而data1对于imshow()来说具有不正确的尺寸(请改用data1.squeeze(axis=2))。


非常感谢。这个问题占去了我几天的时间。 - Deshwal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接