matlab讀寫視頻VideoReader/VideoWriter


前言

視頻處理分析的過程中,需要用到將視頻一幀幀地讀取、寫入,本文就涉及此問題。

系統環境

1.系統:win7_64

2.matlab版本:matlab2015a

測試代碼

代碼一(讀視頻):

%To read video frames.
clc
clear 
close all

fileName = 'E:\fatigue_detection\dataset\segVideosP1\1_5.avi';  
obj = VideoReader(fileName); 
numFrames = obj.NumberOfFrames;                       
for i = 1 : numFrames      
    frame = read(obj,i);                                 
    imshow(frame);                                        
    imwrite(frame,strcat(num2str(i),'.jpg'),'jpg');  
end

 代碼二(讀視頻):

 

fileName = 'E:\fatigue_detection\dataset\segVideosP1\1_5.avi';  

xyloObj = VideoReader(fileName);

vidWidth = xyloObj.Width;
vidHeight = xyloObj.Height;
% mov = struct('cdata',zeros(vidHeight,vidWidth,3,'uint8'),'colormap',[]);

while hasFrame(xyloObj)
    frame = readFrame(xyloObj);
    imshow(frame);
end

 

代碼三(寫視頻):

寫視頻步驟:

創建視頻文件VideoWriter - > 打開視頻文件open - > 獲取視頻幀並寫入視頻文件writeVideo -> 關閉視頻文件close.

fileName = 'E:\fatigue_detection\dataset\segVideosP1\1_5.avi';  

%method2
xyloObj = VideoReader(fileName);
vidWidth = xyloObj.Width;
vidHeight = xyloObj.Height;
fps = xyloObj.FrameRate;

out = VideoWriter('out.avi');
out.FrameRate = fps;
open(out);
while hasFrame(xyloObj)
    frame = readFrame(xyloObj);
    writeVideo(out, frame);
end
close(out);

代碼可參考matlab的help文檔.

注意:

1.不同版本之間可能會存在一些代碼問題,可參考help文檔進行修正.

2.寫入視頻文件之前要先打開文件,寫入完畢之后要關閉文件.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM