matlab中視頻的讀取與顯示

視頻數據的讀取要用到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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章