我已将尺寸为(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)
答案 0 :(得分:0)
为了将数组解释为RGB图像,它需要具有3个通道。通道是numpy数组中的第3维。因此,将您的代码更改为此:
img2 = Image.fromarray(arr.reshape(200,300,3), 'RGB')
我应该提到的是,您讨论的展平数组是1x3072,但是示例代码似乎假设200x300x3,展平时为1x180,000。我不能告诉你这两个是事实。