moviepy ValueError: Invalid value for quantizer: 'wu'

来源:互联网 发布:python 元组列表排序 编辑:程序博客网 时间:2024/06/05 19:22

anaconda + windows10

突然作死,想用python画一下动态的图。

nozuonodie

我参考了网上的各种例程,放一个比较经典的吧:

import numpy as npimport mayavi.mlab as mlabimport moviepy.editor as mpyfrom moviepy.editor import VideoClipduration = 2   #动画的时间区间#用mayavi构建一个figure容器fig_myv = mlab.figure(size=(220,220), bgcolor=(1,1,1))X, Y = np.linspace(-2,2,200), np.linspace(-2,2,200)XX, YY = np.meshgrid(X, Y)ZZ = lambda d: np.sinc(XX**2+YY**2)+np.sin(XX+d)#用movie播放figure里的画面#同时输出一个GIF图片def make_frame(t):    mlab.clf()  #清除figure容器(重置颜色)    mlab.mesh(YY,XX,ZZ(2*np.pi*t/duration), figure=fig_myv)    return mlab.screenshot(antialiased=True)animation = mpy.VideoClip(make_frame, duration=duration)animation.write_gif(".\sinc.gif", fps=20)

当然首先要配置上 mayavi等等,参考:http://blog.csdn.net/xlianglei/article/details/68925377

粘贴好,运行。。。

遇到了错误:


wu是什么鬼!

而且当我把引发错误的 VideoClip 语句注释掉之后就没问题了。类似地还有VideoFileClip,同样报错。

然后我百度了一大堆,貌似并没有什么人遇到这个问题。后来我谷歌了一下,发现有人遇到了类似问题。

原因在于,文件gif_writers.py中,quantizer默认会设置为“wu”,


仔细看文档中的注释

    """    Writes the gif with the Python library ImageIO (calls FreeImage).        For the moment ImageIO is not installed with MoviePy. You need to install    imageio (pip install imageio) to use this.    Parameters    -----------    opt    """
嗯,我确实没有 
ImageIO

打开cmd:

pip install imageio


搞定了,效果如下:


PS: 之前在google上看到有人说在pilowmuliti.py中增加一句

elif quantizer == 'wu':    quantizer = 0

我试了一下也行得通,而且有评论说0其实是最好的quantizer值。

但是我觉得还是能不改就不改默认文件吧,万一以后遇到新bug呢 

0 0