gpt4 book ai didi

python - 是否可以仅使用枕头库生成 gif 动画?

转载 作者:行者123 更新时间:2023-11-28 22:37:35 25 4
gpt4 key购买 nike

我希望能够将 numpy 数组转换为图像。首先,我学习了如何将 3D(高 x 宽 x 颜色)数组转换为图像。经过一些研究,我认为 PIL(或 Pillow)是最自然的方式。这就是我目前的做法(而且效果很好):

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 库。

最佳答案

因此,问题的主要反对意见是在不使用工具的情况下生成由 3D 数组(帧)列表或 4D 矩阵(以宽度、高度、颜色和时间作为维度)表示的 gif 动画是 Python 的“外部”。

看起来 PIL 库无法做到这一点。至少在没有黑客攻击或解决方法的情况下,不是以一种简单的方式。但是,可以通过使用 moviepy 库来实现该目标。这是这个库提供的优雅解决方案:

import numpy as np
import moviepy.editor as mpy

def make_frame(t):

h = 100
w = 100

ar = np.zeros((h, w, 3))

for hi in range(h):
for wi in range(w):
for ci in range(3):
ar[hi, wi, ci] = 255.0*t/15.0
return ar


if __name__ == '__main__':

clip = mpy.VideoClip(make_frame, duration=15.0)
clip.write_gif('ani.gif', fps=15)

关于python - 是否可以仅使用枕头库生成 gif 动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36401912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com