【发布时间】:2016-07-23 22:49:19
【问题描述】:
我希望能够将 numpy 数组转换为图像。首先,我学习了如何将 3D (hight x width x color) 数组转换为图像。经过一些研究,在我看来,PIL(或枕头)是最自然的方法。这就是我目前的做法(而且效果很好):
from PIL import Image
import numpy as np
if __name__ == '__main__':
h = 4
w = 8
arr = np.zeros((h,w,3), dtype=np.uint8)
arr[0, 0, :] = [255,255,0]
arr[3, 7, :] = [0,255,0]
img = Image.fromarray(arr, 'RGB')
img.save('viz.png')
下一步,我希望能够获取 3D 数组(或 4D 数组,其中时间是附加维度)的列表并生成相应的动画。所以,到目前为止我还没有找到怎么做。
看起来 Pillow 可以读取 gif 动画。使用 ImageSequence 我们可以访问它的帧。但是,我不知道如何将一系列图像放入动画中。
我看到了一些使用 ìmages2gif 的解决方案,但我想继续使用单个库。
添加
here 的答案没有回答我的问题。他们使用我什至无法通过 pip 安装的 gifmaker 库。
【问题讨论】:
-
@Reti43,不,我想在 Pillow 中做,那里的答案使用
gifmaker。 -
这是一个来自 Pillow 的脚本,它是一个包装函数,用于使用特殊参数调用
Image.save()。这不适合你吗? -
在我可以尝试使用
Image.save()函数和save_all=True选项之前,我首先需要弄清楚如何创建一个由多个帧组成的图像对象。用 3D 数组列表替换 3D 数组不起作用。 -
好的,我现在明白了。很抱歉错过了这个细节。环顾四周后,我找不到任何证据表明 Pillow 支持您的要求,因此您可能必须创建一个修改后的
GifImagePlugin,或从 images2gif 复制代码,保存为动画 it gif 并将其重新加载到Image对象。我知道,看起来都不理想。
标签: python animation python-imaging-library gif pillow