【发布时间】:2013-11-18 21:21:50
【问题描述】:
我需要使用ax.imshow() 为 matplotlib 图显示背景。我将使用的背景图像是 GIF 图像。尽管安装了 PIL,但以下代码仍会导致错误提示未安装 Python 图像库 (PIL)(确实如此):
from pylab import imread
im_file = open("test.gif")
im_obj = imread(im_file)
直接使用 PIL 读取图像效果更好:
from PIL import Image
import numpy
img = Image.open("test.gif")
img_arr = asarray(img.getdata(), dtype=numpy.uint8)
但是,在重塑数组时,以下代码不起作用:
img_arr = img_arr.reshape(img.size[0], img.size[1], 3) #Note the number 3
原因是实际颜色信息包含在通过img.getcolors() 或img.getpalette() 访问的颜色表中。
使用imread() 或Image.open() 打开图像时,不能将所有图像转换为PNG 或其他合适的格式,从而生成RGB 图像。我可以在需要时使用 PIL 转换图像,但我认为该解决方案很难看。所以问题如下:是否有一种简单快速(图像为 5000 x 5000 像素)的方法将 GIF 图像转换为 RGB(在 RAM 中),以便我可以使用 imshow() 显示它们?
【问题讨论】:
标签: python numpy matplotlib python-imaging-library