視頻數據的讀取要用到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.NumberOfFramesimg = read( mov, i );
imshow(img);
end