python制作动态画面的方法
小编给大家分享一下python制作动态画面的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
python动图的核心函数是matplotlib.animation.FuncAnimation,基本用法是:
anim=animation.funcanimation(fig,animate,init_func=init,frames=100,interval=20,blit=true)#fig:是我们创建的画布#animat:是重点,是我们每个时刻要更新图形对象的函数,返回值和init_func相同#init_func:初始化函数,其返回值就是每次都要更新的对象,#告诉FuncAnimation在不同时刻要更新哪些图形对象#frames:相当于时刻t,要模拟多少帧图画,不同时刻的t相当于animat的参数#interval:刷新频率,毫秒#blit:blit是一个非常重要的关键字,它告诉动画只重绘修改的部分,结合上面保存的时间,#blit=true会使动画显示得会非常非常快
示例:
importnumpyasnpimportmatplotlib.pyplotaspltfrommatplotlib.animationimportFuncAnimation#动图的核心函数importseabornassns#美化图形的一个绘图包sns.set_style("whitegrid")#设置图形主图#创建画布fig,ax=plt.subplots()fig.set_tight_layout(True)#画出一个维持不变(不会被重画)的散点图和一开始的那条直线。x=np.arange(0,20,0.1)ax.scatter(x,x+np.random.normal(0,3.0,len(x)))line,=ax.plot(x,x-5,'r-',linewidth=2)defupdate(i):label='timestep{0}'.format(i)print(label)#更新直线和x轴(用一个新的x轴的标签)。#用元组(Tuple)的形式返回在这一帧要被重新绘图的物体line.set_ydata(x-5+i)#这里是重点,更新y轴的数据ax.set_xlabel(label)#这里是重点,更新x轴的标签returnline,ax#FuncAnimation会在每一帧都调用“update”函数。#在这里设置一个10帧的动画,每帧之间间隔200毫秒anim=FuncAnimation(fig,update,frames=np.arange(0,10),interval=200)
生成GIF动图:
安装imageio库;接着如下代码中的注释,首先读取静态图到列表,作为GIF的每一帧;接着设置输入(静态图)、输出(动态图)和一些必要参数,我们这里设置每一帧间隔时间为1.5秒,默认是1秒,之后调用miageio.mimsave函数去保存结果。
'''Author:SolarzhouEmail:tzhou@foxmail.com公众号:Solarzhou'''importimageiodefcreate_gif(image_list,gif_name,duration=1.0):''':paramimage_list:这个列表用于存放生成动图的图片:paramgif_name:字符串,所生成gif文件名,带.gif后缀:paramduration:图像间隔时间:return:'''frames=[]forimage_nameinimage_list:frames.append(imageio.imread(image_name))imageio.mimsave(gif_name,frames,'GIF',duration=duration)returndefmain():#这里放上自己所需要合成的图片image_list=['1.jpg','2.jpg','3.jpg']gif_name='new.gif'duration=1.5create_gif(image_list,gif_name,duration)if__name__=='__main__':main()
看完了这篇文章,相信你对python制作动态画面的方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。