%存第k帧  clc; clear; video_file='D:pictures5.mp4';%读取视频位置 obj=VideoReader(video_file); frame_num=obj.NumberOfFrames;%一共有多少帧 frame = read(obj,Inf);%获取最后一帧(frame = read(obj,k);%读取第k帧) imwrite(frame,strcat('D:pictureslast.jpg'),'jpg');% 只保存最后一帧,并命名  

运行后D盘相应文件夹即出现相应图片:
MATLAB读取视频并按帧保存
ps:
1.下述方法一和方法二只是命名语句不同```
2.下述代码其实可以保存所有帧,只是帧数太多,以保存前15帧为例。

%存前15帧 ,方法一 clc; clear;  %读取视频 video_file='D:pictures5.mp4'; obj=VideoReader(video_file); frame_num=obj.NumberOfFrames;%一共有多少帧 % 分离图片 for i=1:15%读取前15帧     img=strcat('D:pictures',num2str(i));     img=strcat(img,'.jpg');     I=read(obj,i);%读出第15帧图片     imwrite(I,strcat('D:pictures',num2str(i),'.jpg'),'jpg');% 保存帧 end 

MATLAB读取视频并按帧保存

%存前15帧,方法二 %% 将视频逐帧保存为jpg图片 clc; clear all; close all; obj = VideoReader('D:pictures5.mp4');%输入视频位置 numFrames = obj.NumberOfFrames;% 帧的总数 numzeros= 4;%图片name长度 nz = strcat('%0',num2str(numzeros),'d'); for k = 1:15% 读取前15帧     frame = read(obj,k);%读取第几帧     id=sprintf(nz,k);     imwrite(frame,strcat('D:pictures',id,'.jpg'),'jpg');% 保存帧 end 

MATLAB读取视频并按帧保存

转载read知识:
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帧之后

这里参考到两篇帖子,特此声明(侵删)
原文链接:
https://blog.csdn.net/qq_23097931/article/details/51108747
https://blog.csdn.net/sannianyihoushuma/article/details/84205864?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task

  • 版权声明:文章来源于网络采集,版权归原创者所有,均已注明来源,如未注明可能来源未知,如有侵权请联系管理员删除。

发表回复

后才能评论