绪:Matlab视频读取和帧保存涉及VideoReader类,read读取帧,imwrite帧保存;因此,本文介绍VideoReader类,read读取帧,imwrite帧保存的用法;
工具/原料
matlab2016a
方法/步骤
1、VideoReader用法:由命令helpVideoReader,得OBJ屏顿幂垂=VideoReader(FILENAME)惺绅寨瞀constructsamultimediareaderobject,OBJ,thatcanreadinvideodatafromamultimediafile.FILENAMEisastringspecifyingthenameofamultimediafile.Therearenorestrictionsonfileextensions.Bydefault,MATLABlooksforthefileFILENAMEontheMATLABpath.该语句将视频文件读到OBJ结构,FILENAME为文件路径,可为绝对路径,默认路径为工程目录。
2、VideoReader参数:obj结构体:obj=VideoReader(争犸禀淫'D://Media//111.mp4');%输入视频位置Name–视频文件名霸烹钟爷Path–视频文件路径Duration–视频的总时长(多少秒)FrameRate–视频帧速(帧/秒)NumberOfFrames–视频的总帧数Height–视频帧的高度Width–视频帧的宽度BitsPerPixel–视频帧每个像素的数据长度(比特)VideoFormat–视频的类型,如‘RGB24’.Tag–视频对象的标识符,默认为空字符串”Type–视频对象的类名,默认为’VideoReader’.示例:obj_numberofframe=obj.NumberOfFrame;%读取总的帧数obj_height=obj.Height;%读取视频帧高度
3、read-帧读取frame=read(obj),%获取该视频对象的所有帧frame=read(obj,index),%获取该视频对象的指定帧frame=read(obj,1);%firstframeonly获取第一帧frame=read(obj,[110]);%first10frames获取前10帧frame=read(obj,Inf);%lastframeonly获取最后一帧frame=read(obj,[50Inf]);%frame50thruend获取第50帧之后
4、imwrite-帧保存由命令helpimwrite,得imwrite(A,FILENAME,FMT)writestheimageAtothefilespecifiedbyFILENAMEintheformatspecifiedbyFMT.示例:imwrite(frame,strcat('D:\image\cankao1\1.jpg'),'jpg');%保存帧%%%frame为待保存的某一帧%%%strcat('D:\image\cankao1\1.jpg')为保存目录%%%'jpg'为保存格式
5、视频读取和帧保存程序:obj=VideoReader('out.avi');%输入视频位置numFrames=obj.NumberOfFrames;%帧的总数fork=1:15%读取前15帧frame=read(obj,k);%读取第几帧imshow(frame);%显示帧imwrite(frame,strcat('im',num2str(k),'.jpg'),'jpg');%保存帧end
6、注意事项有时在使用VideoReader读取视频时,matlab会报错:matlab报错:错误使用VideoReader/init(line619)无法确定所需的编解码器。出错VideoReader(line172)obj.init(fileName);解决方法:下载完美转码者或格式工厂,将原视频进行转码,则报错消失。