matlab提取视频流与图片成视频

本文介绍使用Matlab进行视频处理的方法,包括如何从视频流中提取图像,并将其保存为图片文件,以及如何将一系列图片文件合成AVI视频文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 1.如何从视频流中提取图像

    2008以前的版本中提供了aviread这个方法用于读取avi文件,但由于该接口要求avi文件是没有压缩的,这导致其应用非常受限,经过从网上大量的资料搜索,发现了mmreader这个接口,它可以读多种类型的文件,如avi,rmvb,wmv等;同时matlab中提供的aviinfo函数,可以获得avi文件的一些信息,如帧长,时长,帧率,大小等;

    下面的程序演示了将视频转换成图片并保存的示例:

    fileName='vedio.avi';
    videoInfo=aviinfo(fileName);
    %videoInfo.FramesPerSecond; %帧率
    %videoInfo.NumFrames;%帧数
    for i=1:videoInfo.FramesPerSecond:videoInfo.NumFrames
       temp=mmreader(fileName,i);  %获得图片对象
       t=temp.frames.cdata(:,:,:); %转化成图片
       strtemp=strcat('D:\work\picture\',int2str(i),'.','bmp');    
       imwrite(t,strtemp);
   end 

   获取图片的方法中,采用了两个参数的形式,每次读取一帧到内存,这样是防止视频过大导致内存溢出。

 2. 将图片成avi文件

     pfrom=1;pto=200; pext='.bmp';

     navi='tt.avi'; %构造avi文件

     aviobj = avifile(navi);    

     aviobj.Quality = 100;
     aviobj.compression='None';

     for i=pfrom:pto
          fname=strcat('picture\',num2str(i),pext);
          adata=imread(fname);
          aviobj = addframe(aviobj,uint8(adata)); %向avi文件中加帧,转成8位的格式
    end

    aviobj=close(aviobj);



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值