视频分解与合成

matlab练习程序(视频分解为图像序列)

复制代码
mov=aviread('out.avi'); %读入存在e盘的电影x.avi
%movie(mov); %放映电影

%将电影转成图片序列
fnum=size(mov,2); %读取电影的祯数
for i=1:fnum
    strtemp=strcat('C:\Users\tc\Desktop\test\',int2str(i),'.bmp');%将每祯转成jpg的图片
    imwrite(mov(i).cdata,strtemp,'bmp');

end

matlab练习程序(图像序列合成视频)

复制代码
for i=1:40
        fname=strcat('C:\Users\tc\Desktop\test\1 (',int2str(i),').bmp');
        im(:,:,i)=imread(fname); 
        imshow(im(:,:,i)) 
        M(i) = getframe; 
end 

movie2avi(M,'out.avi','FPS',8)%输出视频

注:一下是2012.12.28增加:
上面的程序虽然也能够输出视频,不过效果不好,用到的getframe是截屏用的,而且帧数自己设置的也不可能达到最理想状态,所以就有了以下的一段程序,功能和上面的是一样的,不过效果更好。

clear all;
close all;
clc;

aviobj = avifile('out.avi','compression','None'); %初始化一个avi文件
for i=1:30
fname=strcat(num2str(i),'.bmp');
  im(:,:,1)=imread(fname); %avi需要彩色数据
  im(:,:,2)=im(:,:,1);
  im(:,:,3)=im(:,:,1);
  %以下两步可要可不要
  figure(1);
  imshow(im)
  aviobj=addframe(aviobj,im); %一帧一帧的写入avi
end
aviobj=close(aviobj); %将缓存数据写入avi


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值