matlab中视频的读取与显示

来源:互联网 发布:windows snmp 软件 编辑:程序博客网 时间:2024/06/06 00:14

视频数据的读取要用到VideoReader函数,用VideoReader建立一个obj,采用read函数来一帧一帧读取图像,最后用movie函数来放映视频。但是matlab自带的函数读取avi格式的视频时也只能读取那些原始格式的avi,比较局限性。其读取过程可以采用下面2种方法:

一、先读完,再显示。

  先将视频数据读取到内存的结构体中,然后直接从内存中拿数据来显示,这显示的视频看起来比较流畅,可是一开始把所有数据读入内存的过程所用时间也有点长。

mov = VideoReader( 'F:\activedemo\human_interaction\competition_1_1_xvid.avi' );
movFrames = mov.NumberOfFrames;
movHeight = mov.Height;
movWidth = mov.Width;
src(1:movFrames) = struct( 'cdata', zeros(movHeight, movWidth, 3, 'uint8'),...
    'colormap', [] );%前面一定要是cdata,且后面要加上后面的colormap,
                    %否则运行出错

for i =1:movFrames
    src(i).cdata = read( mov, i );
end

二、读一帧显示一帧。

  直接从视频数据中抽取一帧,然后显示一帧图像

for i=1:mov.NumberOfFrames
    img = read( mov, i );
    imshow(img);
end



0 0
原创粉丝点击