[英]PIL image to array and back
编辑:对不起,该代码的第一个版本是胡扯,我试图删除无用的信息并犯了一个错误。 问题保持不变,但现在是我实际使用的代码
我认为我的问题可能很基本,但是我找不到解决方案。 我基本上只是想玩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)))
不能完全确定您要实现的目标,但是如果您只想将图像转换为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。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.