matlab视频帧提取成图片序列

本文部分参考https://blog.youkuaiyun.com/qq_23097931/article/details/51108747

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 读取视频帧

frame = read(obj),获取该视频对象的所有帧
frame = read(obj,index),获取该视频对象的制定帧
frame = read(obj, 1);         % first frame only 获取第一帧
frame = read(obj, [1 10]);    % first 10 frames 获取前10帧
frame = read(obj, Inf);       % last frame only 获取最后一帧
frame = read(obj, [50 Inf]);  % frame 50 thru end 获取第50帧之后

imwrite介绍

imwrite(frame,strcat('C:\image\car\1.jpg'),'jpg');% 保存帧
%%%frame为待保存的某一帧 
%%%strcat(c:\image\car\1.jpg')为保存目录
%%%'jpg'为保存格式

输出图片序列

namestyle=sprintf('%06d',i);

其中0表示其他位置的填充,6表示一共6位,d表示十进制
比如说是000001 以此类推。

strcat:Strings Catenate

即横向连接字符串,如果是第一个是地址,那么就写入该地址

最终结果

obj = VideoReader('C://Users//Administrator//Documents//...//1.mp4');%输入视频位置
numFrames = obj.NumberOfFrames;% 帧的总数
 for k = 1 : numFrames% 读取前所有帧
     frame = read(obj,k);%读取第几帧
     imshow(frame);%显示帧(可以不用这个)
     namestyle=sprintf('%03d',k);
     imwrite(frame,strcat('C:\Users\Administrator\Documents\...\',namestyle,'.jpg'),'jpg');% 保存帧
 end

`

需要注意在imwrite最后面这里是有一个斜杠的,这样才能写入到指定的文件夹。此外看一下是双杠,单杠,反斜杠。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值