图片和视频的相互转换——Matlab

来源:互联网 发布:linux 恢复挂起 编辑:程序博客网 时间:2024/05/17 17:14
 一、图片转换为moive
function im2movie(aviname, dirname)
% 将目录dirname中图片转换为avi电影(JPG图片)
% aviname:要保存的avi文件名
% dirname:文件所在的路径,最后不带"/"
 
t = cputime;
filename = dir(strcat(dirname, '/*.jpg'));    % 读取目录中的文件名
for i = 1 : length(filename)
    mov(i) = im2frame(imread(strcat(dirname, '/', filename(i).name)));
end
movie2avi(mov,aviname);
e = cputime - t
return
 
 
 
二、moive转换为图片
  视频压缩格式有多种,要使用aviread读入视频,视频压缩格式需为:
      VideoCompression: 'Cinepak'
 
  VideoCompression: 'FMP4'和VideoCompression: 'XVID'
       FMP4和XVID需先通过DVID转换软件转换为XVID,
    然后再通过WinAvi转换软件转换为'Cinepak'压缩格式;
      而  VideoCompression: 'Indeo5'可以直接通过WinAvi转换软件转换为'Cinepak'压缩格式
 
    avi视频转换为'Cinepak'压缩格式后,就可以通过aviread读取,并通过aviinfo显示相关的视频信息
eg:
    >> aviinfo('kids.avi')
ans =
              Filename: 'kids.avi'
              FileSize: 14548026
           FileModDate: '21-Jul-2011 16:51:14'
             NumFrames: 4488
       FramesPerSecond: 29.9700    %帧速
                 Width: 448
                Height: 336
             ImageType: 'truecolor'
      VideoCompression: 'FMP4'   %压缩格式
               Quality: 4.2950e+007
    NumColormapEntries: 0
           AudioFormat: 'Format #80'
             AudioRate: 22050
      NumAudioChannels: 1
 
 
 
 
function avi2im(AVIName)
%本程序的作用是将AVI视频转变成一帧帧的图像,AVIName为要处理的视频文件名,格式为avi,
%AVI视频默认存入在source目录下,在此AVIName不用写具体路径,只要是正确的文件名就可以了,
%转换成帧后的图像也默认存入source目录下。
%DirName是新建的下级文件夹,我们将把生成的图像存入此文件夹
% 一个avi视频转换成一帧一帧的程序
% 给大家提供一个avi视频转换成帧序列的程序
% 用法:建立一个source命名的文件夹,将avi视频放入,
% 调用avi2im('avi视频名称'),转换成的帧序列默认放入source文件夹下。
%要安装相应的解码器
AVIName=strcat('source\',AVIName);
InfoAvi =aviinfo(AVIName);                        %得到AVI视频的技术信息
frmNum=InfoAvi.NumFrames;
mov=aviread(AVIName);                           %要安装相应的解码器,才能将AVI文件转换成movie文件
%mkdir('C:\MATLAB7\work\source\traffic1');                                  %新建下级文件夹,以存放生成的图片
for frm=1:frmNum
   mov =aviread(AVIName,frm);                   %将avi视频信息读入帧
   imName=strcat(AVIName,int2str(frm),'.jpg'); %编辑图像名称,使其能存入下级文件夹,且不重名
   imwrite(mov.cdata,imName);                    %将图像信息存入文件,以便其它处理程序使用
end
原创粉丝点击