MATLAB AVI 视频读取处理
1、用matlab读取avi 视频(只能读一定压缩各式的avi 电影,这是因为avi视频文件的编码有
很多,而matlab只支持部分编码格式。可见
http://blog.csdn.net/IdoIwill/article/details/2125838)
aviinfo('d:bc.avi');
%显示存在d 盘文件abc.avi 的信息,在matlab2010 版本中,该函数可以换成mmreader
mov=aviread('abc:.avi'); %读入电影abc.avi
movie(mov); %放映电影
2、将avi视频转成图片序列
mov=aviread('d:bc.avi'); %读入
Vframes=size(mov,2); %读取视频的帧数,mov 为1*1179 struct,struct就是第4点所介绍的
for i=1: Vframes
strtemp=strcat('d:\转换的图片\',int2str(i),'.','jpg'); %将每帧转成.jpg 的图片
imwrite(mov(i).cdata(:,:,), mov(i).colormap, strtemp); % 把图像写入磁盘
end
3、读取avi视频第index帧有三种使用方式(不适用于索引图):
第一种:mov=aviread(filename); % 读入视频
frame=mov(index); %读取avi 文件的第index 帧图像;
img = frame.cdata; % 读取图像的颜色信息
第二种:frame = aviread(filename, index);
img = frame.cdata;
第三种:mov = aviread(filename);
frame = mov.cdata;
img = mov{index};
例:%读取第一帧图像
mov = aviread('highwayI_raw.AVI'); frame=mov(index); imshow(frame.cdata);
4、读取avi视频第index帧图像后,所储存帧格式是一个结构体(struct),该结构
体有两个元素:cdata 和colormap
例:
frame = aviread('highwayI_raw.AVI', i);
frame.cdata 表示了一个数据数组,彩色图像就是3 维的,灰度图像就是2 维的。也就是相当
于I=imread(‘abc.jpg’)后的数组I
frame.colormap 见(help aviread)
%%%%%了解了以上四点,处理视频文件就可以相当于图像文件一样处理了%%%%