【问题标题】:Using Matplotlib imshow to show GIF image使用 Matplotlib imshow 显示 GIF 图片
【发布时间】: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


    【解决方案1】:

    您需要先将 GIF 转换为 RGB:

    img = Image.open("test.gif").convert('RGB')
    

    看到这个问题:Get pixel's RGB using PIL

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-23
      • 2014-03-09
      • 2023-01-18
      • 1970-01-01
      • 2011-12-24
      • 2012-01-13
      • 2022-01-18
      相关资源
      最近更新 更多