Matplotlib 视频缩放和质量
Matplotlib video zooming and quality
我已经知道如何 and zooming a picture 使用 matplotlib。
我现在想合并这两件事并了解如何在动画中引入缩放:阅读一些文档我注意到这对于图片来说并不简单,我希望视频会相同或更糟。
下面我写了一个简单的工作代码,相关的你可以在第一个找到link
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation
from matplotlib import cm
#Define x,y vectors and meshgrid with function u on it
x = np.arange(0,10,.1)
y = np.arange(0,10,.1)
X,Y = np.meshgrid(x,y)
#Create a figure and an axis object for the surface
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
#Animation without axes and with colormap
def animate(n):
ax.cla()
u = np.sin(X+Y+(n/10))
plt.axis('off')
plt.grid('off')
ax.plot_surface(X,Y,u,cmap=cm.inferno)
return fig,
anim = animation.FuncAnimation(fig,animate,frames=63)
anim.save('A.mp4',fps=20)
此处输出
正如你所见,缩放得不错,但还不够,我更想要!
在我使用的实际代码中,视频动画非常非常小,我不知道为什么,因为它与此非常相似。我也希望通过这种方式可以提高视频质量,那是很差的。
感谢您的帮助。
我终于找到了一个原始但有效的解决方案。代码几乎没有变化
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation
from matplotlib import cm
#Define x,y vectors and meshgrid with function u on it
x = np.arange(0,10,.1)
y = np.arange(0,10,.1)
X,Y = np.meshgrid(x,y)
#Create a figure and an axis object for the surface
fig = plt.figure(frameon=False)
ax = fig.add_subplot(111,projection='3d')
#Definition? and zooming
fig.set_size_inches(10,10)
fig.subplots_adjust(left=0,right=1,bottom=0,top=1,wspace=None,hspace=None)
#Animation without axes and with colormap
def animate(n):
ax.cla()
u = np.sin(X+Y+(n/10))
plt.axis('off')
plt.grid('off')
ax.plot_surface(X,Y,u,cmap=cm.inferno)
print(n)
return fig,
anim = animation.FuncAnimation(fig,animate,frames=63)
anim.save('A.gif',fps=20)
如您所见,缩放效果很好。
画质不好是我临时压缩的原因,因为实际输出的gif参数比较重,其实画质很好
我已经知道如何
下面我写了一个简单的工作代码,相关的你可以在第一个找到link
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation
from matplotlib import cm
#Define x,y vectors and meshgrid with function u on it
x = np.arange(0,10,.1)
y = np.arange(0,10,.1)
X,Y = np.meshgrid(x,y)
#Create a figure and an axis object for the surface
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
#Animation without axes and with colormap
def animate(n):
ax.cla()
u = np.sin(X+Y+(n/10))
plt.axis('off')
plt.grid('off')
ax.plot_surface(X,Y,u,cmap=cm.inferno)
return fig,
anim = animation.FuncAnimation(fig,animate,frames=63)
anim.save('A.mp4',fps=20)
此处输出
正如你所见,缩放得不错,但还不够,我更想要!
在我使用的实际代码中,视频动画非常非常小,我不知道为什么,因为它与此非常相似。我也希望通过这种方式可以提高视频质量,那是很差的。 感谢您的帮助。
我终于找到了一个原始但有效的解决方案。代码几乎没有变化
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animation
from matplotlib import cm
#Define x,y vectors and meshgrid with function u on it
x = np.arange(0,10,.1)
y = np.arange(0,10,.1)
X,Y = np.meshgrid(x,y)
#Create a figure and an axis object for the surface
fig = plt.figure(frameon=False)
ax = fig.add_subplot(111,projection='3d')
#Definition? and zooming
fig.set_size_inches(10,10)
fig.subplots_adjust(left=0,right=1,bottom=0,top=1,wspace=None,hspace=None)
#Animation without axes and with colormap
def animate(n):
ax.cla()
u = np.sin(X+Y+(n/10))
plt.axis('off')
plt.grid('off')
ax.plot_surface(X,Y,u,cmap=cm.inferno)
print(n)
return fig,
anim = animation.FuncAnimation(fig,animate,frames=63)
anim.save('A.gif',fps=20)
如您所见,缩放效果很好。 画质不好是我临时压缩的原因,因为实际输出的gif参数比较重,其实画质很好