MoviePy - 中文文档2-快速上手-使用matplotlib(一个2D绘图库)

回到目录

使用matplotlib(一个2D绘图库)

用户自定义动画

moviepy允许开发者自定义动画:定义一个方法,以numpy数组的形式在动画中给定的时间返回一帧画面。

一个例子如下:

from moviepy.editor import VideoClip

def make_frame(t):
    '''
    返回在t时刻的一帧画面
    '''
    # 通过其他的任意第三方库,创建一帧画面
    return frmae_from_time_t #(height * width * 3) Numpy array
animation = VideoClip(make_frame, duration=3)

这样的animation,通常可以按照moviepy中的方式导出,如下:

# 导出为一个视频
animation.write_videofile("my_animation.mp4", fps=24)
# 导出为一个GIF动图
animation.write_gif("my_animation.gif", fps=24) # 一般情况,这种方式会慢点

简单的matplotlib示例

一个使用matplotlib操作动画的例子,如下:
 

import matplotlib.pyplot as plt
import numpy as np
from moviepy.editor import VideoClip
from moviepy.video.io.bindings import mplfig_to_npimage

x = np.linspace(-2, 2, 200)

duration = 2

fig,ax = plt.subplots()
def make_frame(t):
    ax.clear()
    ax.plot(x, sinc(x**2) + np.sin(x + 2*np.pi/duration * t), lw=3)
    ax.set_ylim(-1.5, 2.5)
    return mplfig_to_npimage(fig)

animation = VideoClip(name_frame, duration=duration)
animation.write_gif("matplotlib.gif", fps=20)

使用Jupyter Notebook

如果我们在Jupyter Notebook写代码的话,我们就可以享受到使用ipython_display方法将VideoClips嵌入notebook的output部分。下面就是一个实现案例:
 

import matplotlib.pyplot as plt
import numpy as np
from moviepy.editor import VideoClip
from moviepy.vedio.io.bindings import mplfig_to_npimage

x = np.linspace(-2, 2, 200)

duration = 2

fig, ax = plt.subplots()

def make_frame(t):
    ax.clear()
    ax.plot(x, np.sinc(x**2) + np.sin(x + 2*np.pi/duration * t), lw=3)
    ax.set_ylim(-1.5, 2.5)
    return mplfig_to_npimage(fig)

animation = VideoClip(make_frame, duration=duration)
animation.ipython_display(fps=20, loop=True, autoplay=True)

一起交流,一起进步,群内提问答疑

QQ群:MoviePy中文 :819718037

回到目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ucsheep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值