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
请发表评论