Мне нужно указать фон на график matplotlib, используя ax.imshow()
. Фоновыми изображениями, которые я буду использовать, являются GIF-изображения. Несмотря на установленный PIL, следующий код приводит к ошибке, жалующиеся, что Python Image Library (PIL) не установлен (что это):Использование Matplotlib imshow для отображения изображения GIF
from pylab import imread
im_file = open("test.gif")
im_obj = imread(im_file)
Чтение изображения с помощью 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
причина заключается в том, что текущая информации о цвете содержится в таблицах цветов доступа sed через img.getcolors()
или img.getpalette()
.
Преобразование всех изображений в PNG или другой подходящий формат, который приводит к образам RGB при их открытии с imread()
или Image.open()
, не является вариантом. Я мог бы конвертировать изображения при необходимости с помощью PIL, но считаю это решение уродливым. Итак, вопрос заключается в следующем: есть ли простой и быстрый способ (изображения размером 5000 х 5000 пикселей) преобразовать изображения GIF в RGB (в ОЗУ), чтобы я мог их отображать с помощью imshow()
?