MATLAB AVI 视频读取处理

1、用matlab读取avi视频(只能读一定压缩各式的avi 电影,这是因为avi视频文件的编码

有很多,而matlab只支持部分编码格式。可见

http://www.doczj.com/doc/4ae6c6222af90242a895e5fd.html/IdoIwill/article/details/2125838)

aviinfo('d:\abc.avi');

%显示存在d 盘文件abc.avi 的信息,在matlab2010 版本中,该函数可以换成mmreader

mov=aviread('abc:.avi'); %读入电影abc.avi

movie(mov); %放映电影

2、将avi视频转成图片序列

mov=aviread('d:\abc.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)

%%%%%了解了以上四点,处理视频文件就可以相当于图像文件一样处理了%%%%

更多推荐