【问题标题】:Empty .mp4 file created after making video from matplotlib using matplotlib.animation使用 matplotlib.animation 从 matplotlib 制作视频后创建的空 .mp4 文件
【发布时间】:2016-09-24 20:35:04
【问题描述】:

我找到了这个小代码,我可以使用它保存一个视频(在网格中随机改变颜色):

import numpy as np
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from scipy import rand

Writer = animation.writers['ffmpeg']
writer = Writer(fps=15, metadata=dict(artist='xy'), bitrate=3600)

fig = plt.figure()
frames = []
for add in np.arange(15):
    base = rand(10, 10)
    frames.append((plt.pcolormesh(base, ),))

im_ani = animation.ArtistAnimation(fig, frames, interval=500, repeat_delay=3000,
                               blit=True)
im_ani.save('Vid.mp4', writer=writer)

我尝试将其插入到我的模拟中,我没有收到任何错误,但视频是空的,整个画面都是白色的。你能帮我解决这个问题吗?这是我得到它的最简单的情况:

class Dummy():

    def __init__(self):
        self.video=[]

    def addFrame(self):

        Frame=rand(10,10)
        print (Frame)
        self.video.append((plt.pcolormesh(Frame),))

    def saveVideo(self):

        Writer = animation.writers['ffmpeg']
        writer = Writer(fps=15, metadata=dict(artist='XY'), bitrate=3600)
        fig = plt.figure()

        im_ani = animation.ArtistAnimation(fig, self.video, interval=500, repeat_delay=3000,
                               blit=True)
        im_ani.save('myVid.mp4', writer=writer, dpi=dpi)

你可以试试:

from scipy import rand

foo=Dummy()

for i in range(20):
   foo.addFrame()

foo.saveVideo()

【问题讨论】:

  • 我怀疑self.video.append((plt.pcolormesh(Frame),)) 行是错误的。我不明白 , 分隔符和括号' 。 if Iremove 它们,错误,在示例中也是如此。

标签: python numpy video matplotlib simulation


【解决方案1】:

您的self.video.append((plt.pcolormesh(Frame),)) 行很好。你只是改变了语句的顺序。

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import numpy as np


class Dummy():
    def __init__(self, fname):
        self.fname = fname
        self.video = []
        self.fig, self.ax = plt.subplots()  # Create new figure here

    def addFrame(self):
        Frame = np.random.rand(10, 10)
        self.video.append((self.ax.pcolormesh(Frame), ))

    def saveVideo(self):
        Writer = animation.writers['ffmpeg']
        writer = Writer(fps=15, metadata=dict(artist='XY'), bitrate=3600)
        im_ani = animation.ArtistAnimation(self.fig, self.video, interval=500,
                                           repeat_delay=3000, blit=True)
        im_ani.save(self.fname, writer=writer)


foo1 = Dummy('foo1.mp4')
for i in range(20):
   foo1.addFrame()
foo1.saveVideo()

foo2 = Dummy('foo2.mp4')
for i in range(40):
   foo2.addFrame()
foo2.saveVideo()

【讨论】:

  • 请问如何制作更多视频?我复制了线条,创建了self.fig2,self.video2,我填充了self.video2,但是保存的视频不行。其中一个只有白色,另一个包含静态图像。
  • 谢谢。它以这种方式工作,但在我的情况下,同一个实例化类包含两个不同的信息,我想制作关于它们的视频,例如:self.videoNightly、self.VideoDaily,它们存在于类的同一个具体实例中。
猜你喜欢
  • 2017-06-20
  • 2020-09-14
  • 1970-01-01
  • 2019-09-17
  • 2021-09-26
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 2021-02-04
相关资源
最近更新 更多