在Python中将动画GIF转换为4D数组

在Python中将动画GIF转换为4D数组,python,python-3.x,gif,animated-gif,Python,Python 3.x,Gif,Animated Gif,我想将.gif文件转换为4D数组/RGB值的3D数组 我试过PIL,但那似乎只让我把gif当作灰度图像来阅读。 来自numpy的ndimage没有这个问题,但它只会生成gif的第一帧 出于测试目的,我试图转换的.gif是 (非常小,由GIMP制造) 它在第一帧的顶部以红色增加,在第一帧的一侧以绿色增加,在左上角随着帧的推进以蓝色增加 比尔给了我 [[[ 0 3 5 6 8] [ 7 12 12 12 12] [ 9 12 12 12 12] [10 12 12 12 12]

我想将.gif文件转换为4D数组/RGB值的3D数组

我试过PIL,但那似乎只让我把gif当作灰度图像来阅读。 来自numpy的ndimage没有这个问题,但它只会生成gif的第一帧

出于测试目的,我试图转换的.gif是

(非常小,由GIMP制造)

它在第一帧的顶部以红色增加,在第一帧的一侧以绿色增加,在左上角随着帧的推进以蓝色增加

比尔给了我

[[[ 0  3  5  6  8]
  [ 7 12 12 12 12]
  [ 9 12 12 12 12]
  [10 12 12 12 12]
  [11 12 12 12 12]]
 [[ 1 12 12 12 12]
  [12 12 12 12 12]
  [12 12 12 12 12]
  [12 12 12 12 12]
  [12 12 12 12 12]]
 [[ 2 12 12 12 12]
  [12 12 12 12 12]
  [12 12 12 12 12]
  [12 12 12 12 12]
  [12 12 12 12 12]]
 [[ 4 12 12 12 12]
  [12 12 12 12 12]
  [12 12 12 12 12]
  [12 12 12 12 12]
  [12 12 12 12 12]]]
而numpy给了我

[[[  0   0   0]
  [ 20   0   0]
  [ 40   0   0]
  [ 60   0   0]
  [ 80   0   0]]

 [[  0  20   0]
  [255 255 255]
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[  0  40   0]
  [255 255 255]
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[  0  60   0]
  [255 255 255]
  [255 255 255]
  [255 255 255]
  [255 255 255]]

 [[  0  80   0]
  [255 255 255]
  [255 255 255]
  [255 255 255]
  [255 255 255]]]
这两个都不是我想要的

import numpy as np
from PIL import Image, ImageSequence

img = Image.open('test.gif')
frames = np.array([np.array(frame.copy().convert('RGB').getdata(),dtype=np.uint8).reshape(frame.size[1],frame.size[0],3) for frame in ImageSequence.Iterator(img)])
输出:

(帧数*帧宽*帧高*3(RGB))


请同时粘贴输出。
    [array([[[  0,   0,   0],
             [ 20,   0,   0],
             [ 40,   0,   0],
             [ 60,   0,   0],
             [ 80,   0,   0]],

            [[  0,  20,   0],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[  0,  40,   0],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[  0,  60,   0],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[  0,  80,   0],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]]], dtype=uint8), 
     array([[[  0,   0,  20],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]]], dtype=uint8), 
     array([[[  0,   0,  40],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]]], dtype=uint8), 
     array([[[  0,   0,  60],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]],

            [[255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255],
             [255, 255, 255]]], dtype=uint8)]