繁体   English   中英

PIL图像到阵列并返回

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM