我认为我的问题可能非常基本但我无法找到解决方案。我基本上只是想玩PIL并将图像转换为数组并向后转换,然后保存图像。看起来应该是一样的吧?在我的情况下,新图像只是乱码,它似乎有一些结构,但它不是一个像它应该是的飞机的图片:
def array_image_save(array, image_path ='plane_2.bmp'):
image = Image.fromarray(array, 'RGB')
image.save(image_path)
print("Saved image: {}".format(image_path))
im = Image.open('plane.bmp').convert('L')
w,h = im.size
array_image_save(np.array(list(im.getdata())).reshape((w,h)))
答案 0 :(得分:1)
不完全确定您要实现的目标,但如果您只想将图像转换为numpy数组并返回,则以下工作:
from PIL import Image
import numpy as np
def array_image_save(array, image_path ='plane_2.bmp'):
image = Image.fromarray(array)
image.save(image_path)
print("Saved image: {}".format(image_path))
im = Image.open('plane.bmp')
array_image_save(np.array(im))
您可以将PIL图像传递给np.array
,它可以处理正确的整形。您获得数据失真的原因是您将pil图像转换为灰度(.convert('L')
),然后尝试将其保存为RGB。