MATLAB 生成.avi和.gif

1、读取.avi文件

[plain]  view plain  copy
  1. mov=mmreader('input.avi');     %读取视频  
  2. b=read(mov,1);       %把第一帧赋给b  
  3. imshow(b);    
            

2、生成.avi文件

[plain]  view plain  copy
  1. clc;  
  2. clear;  %最好先做清空  
  3. fig=figure;  
  4. aviobj=avifile('example.avi');  %使用默认的参数创建一个avifile object  
  5. %如果使用avifile函数后出错:  
  6. %Warning: Cannot locate Indeo5 compressor, using 'None' as the compression type  
  7. %解决办法如下:  
  8. %执行 开始 菜单-运行 输入regsvr32ir50_32.dll  
  9. %看见提示成功就可以读取播放了!但是该方法有时行有时不行!!  
  10. %如果要修改aviobj属性值,可使用上面的方法创建aviobj后再去修改其属性值,如:  
  11. % aviobj. FPS = 10;  
  12. %也可直接在创建时指定好值:aviobj = avifile(‘axample.avi’,’FPS’,10,’COMPRESSION’,’None’);  
  13. %avifile的帮助文件给的非常详细,如有问题注意看帮助文档哟  
  14. x= 0:10;  
  15. for k=1:10  
  16. plot(x,k*x);  
  17. axis([0 10 0 100]);  
  18. frame=getframe(fig);  
  19. aviobj=addframe(aviobj,frame);  
  20. end  
  21. aviobj=close(aviobj)  

生成.avi文件还可以使用movie2avi函数,但是这个函数内部也是调用了addframe函数

[cpp]  view plain  copy
  1. clc;  
  2. clear;  
  3. x=0:10;  
  4. for k=1:10  
  5.   plot(x,k*x);  
  6.   axis([0 10 0 100]);  
  7.   M(k) = getframe;  
  8. %F=gefframe,从当前图形框中得到动画帧  
  9. %F=gefframe(h),从图形句柄h中得到动画帧  
  10. %F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧  
  11. end  
  12. movie(M,1)  %movie函数只是动态显示M中保存的帧,并不生成可脱离MATLAB环境的.avi  
  13. %movie(M),将矩阵M中的动画帧播放一次  
  14. %movie(M,n),将矩阵M中的动画帧播放n次  
  15. %movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次  
  16. movie2avi(M)  %生成可脱离MATLAB的.avi  

 

3、生成.gif格式

[plain]  view plain  copy
  1. x= 0:10;  
  2. for k=1:10       
  3.   plot(x,k*x);  
  4.   axis([0 10 0 100]);  
  5.   frame=getframe(gcf);    
  6.   im=frame2im(frame);    %先将结构frame转化为对应的图像  
  7.   [I,map]=rgb2ind(im,256);  %将图像转为索引图,制作gif文件,图像必须是index索引图像  
  8.   %imwrite的'writemode'默认为overwrite,如果.gif还未创建,要先使用overwrite方式,否则会报错  
  9.   if k==1  
  10.     imwrite(I,map,'out.gif','gif','LoopCount',inf); %说明loopcount只是在k==1的时候才有用  
  11.   else  
  12.   imwrite(I,map,'out.gif','gif','WriteMode','append'); %loopcount对k>=2无效  
  13.   end  
  14. end  

程序运行完用浏览器打开生成的.gif即可。


4、对三维图生成动画


[plain]   view plain  copy
  1. clc;  
  2. clear;  
  3. Z = peaks;  
  4. for k = 1:20  
  5.   surf(cos(2*pi*k/20)*Z,Z)  
  6.   f = getframe;   %f是一个结构体,有成员"cdata"和"colormap",cdata就是抓取的彩色图像,具体可help getframe  
  7.   [I,map] = rgb2ind(f.cdata,256,'nodither'); %这里不再用frame2im先转化成image然后再转化索引图,而是直接利用f.cdata转化成索引图,两种方式均可  
  8.   if k==1  
  9.   imwrite(I,map,'DancingPeaks.gif','DelayTime',0,'LoopCount',inf)  
  10.   else  
  11.      imwrite(I,map,'DancingPeaks.gif','gif','WriteMode','append');  
  12.   end  
  13. end  

转自:https://blog.csdn.net/xdfyoga1/article/details/40682097


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值