一、视频输入
1. aviread
二、视频播放
movie
三、视频文件信息
aviinfo
四、视频格式转换
movie2avi
随便拿avi文件进行读取转换,会出错,原因之一:aviread函数只能读取特定编码格式的avi视频,解决办法三个:
1、下载个转换器,转换你的编码格式
2、利用另一个matlab函数:mmreader可以读取更多格式的avi视频(2010版本才能支持)
3、高版本的matlab,aviread函数得到了升级,可以读取很多编码格式的avi……
例程:
[filename,pathname,fileindex]=uigetfile('*.avi','请选择一个Avi文件');
video_info=aviinfo([pathname filename]);
% info =
% Filename: 视频名称
% FileSize: 视频大小
% FileModDate: 视频创建日期
% NumFrames: 视频总帧数
% FramesPerSecond: 视频采集速率
% Width: 视频宽度
% Height: 视频高度
% ImageType: 'truecolor' 图像模式
% VideoCompression: 'DIV3' 视频图像压缩格式
% Quality: 0
% NumColormapEntries: 0
LEN=video_info.NumFrames; %获得视频长度
for k=1:LEN
video_videotape(k)=aviread(video_info.Filename,k); %读入avi文件的第k帧
video_image=video_videotape(k).cdata;
if k<10
imwrite(video_image,strcat('0000',int2str(k),'.bmp'),'bmp');%把每帧图像存入硬盘
elseif k>=10 & k<100
imwrite(video_image,strcat('000',int2str(k),'.bmp'),'bmp');%把每帧图像存入硬盘
elseif k>=100 & k<1000
imwrite(video_image,strcat('00',int2str(k),'.bmp'),'bmp');%把每帧图像存入硬盘
elseif k>=1000 & k<1000
imwrite(video_image,strcat('0',int2str(k),'.bmp'),'bmp');%把每帧图像存入硬盘
else
imwrite(video_image,strcat(int2str(k),'.bmp'),'bmp');%把每帧图像存入硬盘
end
end
备注:通过更改imwrite那儿的很多参数,可以获得自己想要的很多结果,比如更改bmp为jpg,
以及其它,具体请在MATLAB下help imwrite。
clear all
mov=mmreader('nba.avi'); %用mmreader读入视频文件
for i=1:mov.numberofframes %获得总帧数,并依次读取
b=read(mov,i);
imwrite(b,strcat('m',int2str(i),'.bmp'),'bmp'); %把第i帧的图片写为'mi.bmp'
end