Matlab讀取視頻並處理成幀保存


Matlab讀取視頻並處理成幀保存

本文介紹主要介紹VideoReader讀取視頻,並用imwrite將視頻幀保存。

VideoReader介紹

obj = VideoReader('D://Media//111.mp4');%輸入視頻位置

難點在於詳解obj結構體的含義,如下(見doc VideoReader): 
Name - -視頻文件名 
Path – 視頻文件路徑 
Duration – 視頻的總時長(秒) 
FrameRate - -視頻幀速(幀/秒) 
NumberOfFrames – 視頻的總幀數 
Height – 視頻幀的高度 
Width – 視頻幀的寬度 
BitsPerPixel – 視頻幀每個像素的數據長度(比特) 
VideoFormat – 視頻的類型, 如 ‘RGB24’. 
Tag – 視頻對象的標識符,默認為空字符串” 
Type – 視頻對象的類名,默認為’VideoReader’. 
UserData – Generic field for data of any class that you want to add to the object. Default: []

obj_numberofframe = obj.NumberOfFrame;%讀取總的幀數
obj_height = obj.Height;%讀取視頻幀高度
%%%以此類推

read - 讀取視頻幀

1 frame = read(obj),獲取該視頻對象的所有幀
2 frame = read(obj,index),獲取該視頻對象的制定幀
3 frame = read(obj, 1);         % first frame only 獲取第一幀
4 frame = read(obj, [1 10]);    % first 10 frames 獲取前10幀
5 frame = read(obj, Inf);       % last frame only 獲取最后一幀
6 frame = read(obj, [50 Inf]);  % frame 50 thru end 獲取第50幀之后

imwrite-寫入文件

1  imwrite(frame,strcat('D:\image\cankao1\1.jpg'),'jpg');% 保存幀
2 %%%frame為待保存的某一幀 
3 %%%strcat('D:\image\cankao1\1.jpg')為保存目錄
4 %%%'jpg'為保存格式

整體代碼

1 obj = VideoReader('D://Media//111.mp4');%輸入視頻位置
2 numFrames = obj.NumberOfFrames;% 幀的總數
3  for k = 1 : 15% 讀取前15幀
4      frame = read(obj,k);%讀取第幾幀
5     % imshow(frame);%顯示幀
6       imwrite(frame,strcat('D:\image\cankao1\',num2str(k),'.jpg'),'jpg');% 保存幀
7  end

再如例子:

1 file_path =  'F:/__identity/activity/賽事/2017建模交大賽題/B題附件/附件1/';
2 obj1 = VideoReader(strcat(file_path,'1','.avi'));   %讀入視頻1
3 obj1_numFrames = obj1.NumberOfFrames;   % 視頻1幀的總數
4 for k = 1:obj1_numFrames
5     frame = read(obj1,k);   %讀取第k幀
6     % imshow(frame);    %顯示第k幀
7     store_path = strcat(file_path,'pict1/',num2str(k),'.jpg');    % 第k幀圖片的地址
8     imwrite(frame,store_path);  % 保存幀
9 end

 


免責聲明!

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



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