用MATLAB制作avi视频:VideoWriter代替movie2avi

movie2avi函数不存在

一次作业要求画出电偶极子的转动时电场分布的动图,用quiver作图,用movie做动画,一切都那么美好。然而到了要将movie保存为avi格式的时候,发现movie2avi函数已经不能用了。

VideoWriter已经替代movie2avi

查找资料后发现,movie2video 函数在版本更新的时候被完全删除了,取而代之的是VideoWriter。
博主版本:R2018a

VideoWriter的使用

创建
avi1=VideoWriter('dipole3_1.avi',profile);

其中profile可以不写,其值可以为以下几项:

profile意义
‘Archival’Motion JPEG 2000 file with lossless compression
‘Motion JPEG AVI’Compressed AVI file using Motion JPEG codec. (default)
‘Motion JPEG 2000’Compressed Motion JPEG 2000 file
‘MPEG-4’Compressed MPEG-4 file with H.264 encoding (Windows 7 and Mac OS X 10.7 only)
‘Uncompressed AVI’Uncompressed AVI file with RGB24 video.
‘Indexed AVI’Uncompressed AVI file with Indexed video.
‘Grayscale AVI’Uncompressed AVI file with Grayscale video.

这个我不熟悉,不翻译。

参数更改

VideoWriter 有可变和不可变参数。
比如说帧数是不可变的,而帧速可变。
在open 之前,可以改变这些参数。如


>> avi1.FrameCount=1
您无法设置 VideoWriter 的只读属性 'FrameCount'。
>> avi1.FrameRate=5;
转为avi
open(avi1);
 writeVideo(avi1,f);
 close(avi1)

f是事先制作好的moviein。

示例

 syms x y a u v l
 l=5;
 for j=0:40
	a=j*pi/6;
 	u=(l.*cos(a)-x)./((l.*cos(a)-x).^2+(l.*sin(a)-y).^2)^(1.5)+(x+l.*cos(a))./((x+l.*cos(a)).^2+(y+l*sin(a)).^2)^(1.5);
 	v=(l.*sin(a)-y)./((l.*cos(a)-x).^2+(l.*sin(a)-y).^2)^(1.5)+(y+l.*sin(a))./((x+l.*cos(a)).^2+(y+l*sin(a)).^2)^(1.5);
 	quiver(x,y,u,v);
 	axis([-10,10,-10,10]);
 	f(:,j+1)=getframe();
 	clf
 end
 movie(f)

 avi1=VideoWriter('dipole3_1.avi');
 avi1.FrameRate=5;
 open(avi1);
 writeVideo(avi1,f);
 close(avi1)

效果图
效果图

参考文档

https://ww2.mathworks.cn/help/matlab/ref/videowriter.html?lang=en
https://ww2.mathworks.cn/help/matlab/ref/videowriter.html?searchHighlight=videowriter&s_tid=doc_srchtitle

  • 13
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值