如何将RGB图像(1-D)的展平数组转换回原始图像

时间:2019-08-10 21:44:30

标签: numpy matplotlib deep-learning python-imaging-library

我已将尺寸为(32 * 32 * 3)的RGB图像创建的(1 * 3072)的一维数组展平。我想提取尺寸为(32 * 32 * 3)的原始RGB图像并将其绘制。

我尝试了how to convert a 1-dimensional image array to PIL image in Python

中建议的解决方案

但这对我不起作用,似乎是针对灰度图像

from PIL import Image
from numpy import array
img = Image.open("sampleImage.jpg")
arr = array(img)
arr = arr.flatten()
print(arr.shape)
#tried with 'L' & 'RGB' both
img2 = Image.fromarray(arr.reshape(200,300), 'RGB') 

plt.imshow(img2, interpolation='nearest')
plt.show()

“由于无法隐蔽RGB而低于预期的错误”

ValueError: cannot reshape array of size 180000 into shape (200,300)

1 个答案:

答案 0 :(得分:0)

为了将数组解释为RGB图像,它需要具有3个通道。通道是numpy数组中的第3维。因此,将您的代码更改为此:

img2 = Image.fromarray(arr.reshape(200,300,3), 'RGB')

我应该提到的是,您讨论的展平数组是1x3072,但是示例代码似乎假设200x300x3,展平时为1x180,000。我不能告诉你这两个是事实。