Python 使用matplotlib.animation从matplotlib制作视频后创建的空.mp4文件
我找到了这段小代码,我可以使用它保存视频(网格中的随机颜色变化):Python 使用matplotlib.animation从matplotlib制作视频后创建的空.mp4文件,python,numpy,video,matplotlib,simulation,Python,Numpy,Video,Matplotlib,Simulation,我找到了这段小代码,我可以使用它保存视频(网格中的随机颜色变化): 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,
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),)
行没有问题。你只是改变了陈述的顺序
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.video.append((plt.pcolormesh(Frame),)
行是错误的。我不明白“分隔符和括号”的意思。如果我删除了它们,就会出现错误,在示例中也是这样。我可以问一下如何制作更多视频吗?我复制了这些行,创建了self.fig2,self.video2,我填充了self.video2,但是保存的视频不好。其中一个仅为白色,另一个包含静态图像。谢谢。它是这样工作的,但在我的例子中,同一个实例化的类包含两个不同的信息,我想制作关于它们的视频,比如:self.videoNightly,self.VideoDaily,它们存在于同一个类的具体实例中。