Matlab—绘图保存为视频VideoWrite()函数用法与自定义视频尺寸
1.早期版本的avifile()函数
Matlab中提供了将显示图形保存成视频的功能。早期的版本使用函数avifile()来创建视频文件用于存储动画
vedioObj = avifile(filename,'PropertyName',value,'PropertyName',value,...); %// 创建视频文件
avifile()函数的使用方法和例子可以参看
http://www-rohan.sdsu.edu/doc/matlab/techdoc/ref/avifile.html
http://www.cnblogs.com/wb-DarkHorse/p/3171418.html
2.VideoWrite()函数
在使用Matlab2012时,发现avifile()已经被新的类VideoWriter()取代。
VideoWrite函数,配合open,writeVideo和close方法从图像(figure)中创建视频文件、静态图像或Matlab视频。VideoWrite函数可以创建AVI和Motion JPEG 2000格式的视频文件,这些文件在多平台上都能播放,也可以创建在window平台上播放的MPEG-4文件。VideoWrite函数支持大于2GB的视频文件。VideoWrite函数使用预先定义的属性来设置视频属性,例如'Uncompressed AVI' or 'MPEG-4'等。创建视频文件:
writerObj = VideoWriter(filename,profile)
VideoWrite函数有两个输入参数:filename和profile。
(1)VideoWrite()函数参数:filename
单引号引用的字符串指定视频文件名。文件名可以加扩展名,也可以不加扩展名。Matlab支持的视频文件扩展名如下表所示:
(2)VideoWrite()函数参数:profile
使用单引号引用的字符串,描述了创建视频的类型。
(3)VideoWrite()函数:操作方法
close Closefile after writing video data 写完视频数据后关闭文件
getProfiles List profiles and file formats supportedby VideoWriter 列出VideoWriter支持的配置和文件格式
open Openfile for writing video data 打开视频
writeVideo Write video data to file 写视频
3.写视频的步骤
写视频的步骤主要包括
- 创建视频并打开该视频文件
- 在循环中获取图像中的帧
- 将帧写入视频文件
- 循环结束后关闭视频文件
以下举上一篇博文绘制半径逐渐变化的圆及扫描线段的例子说明将绘图保存成视频的方法。
(1)创建并打开视频文件
在代码初始化阶段创建一个视频文件,指定其名称,并打开该视频文件。
writerObj=VideoWriter('test.avi'); %// 定义一个视频文件用来存动画
open(writerObj); %// 打开该视频文件
(2)在循环中获取图像帧并写入视频
写入视频的前提是不断获取图像帧,而这一步骤则是每次更新figure上的图形后来完成,即在绘图循环中,所有图形重绘结束后,使用getframe方法获取当前figure上的图像并写入打开的视频文件
frame = getframe; %// 把图像存入视频文件中
writeVideo(writerObj,frame); %// 将帧写入视频
(3)循环结束后关闭视频文件句柄
循环结束后(想要记录的图像全部绘制完毕后),别忘了关闭视频文件句柄close(writerObj); %// 关闭视频文件句柄
4.自定义视频的像素尺寸
frame = getframe;
frame.cdata = imresize(frame.cdata, [H W]); %// 设置视频宽高:H为行数(高),W为列数(宽)
writeVideo(writerObj,frame);