怎么查看视频的帧率帧数、用Matlab把视频分成一帧帧的图片,再把图片按指定帧率合成视频

一、把视频分成一帧帧的图片的几种方法

1
2
3
4
5
6
obj = VideoReader('E:\工业相机\sp\PIC_0145.MP4');%输入视频位置
numFrames = obj.NumberOfFrames;% 帧的总数
 for k = 1 : 15% 读取前15帧
     frame = read(obj,k);%读取第几帧
     imwrite(frame,strcat('E:\工业相机\111\',num2str(k),'.jpg'),'jpg');% 保存帧
     end

1
2
3
4
5
6
7
8
xyloObj = VideoReader('E:\工业相机\sp\PIC_0141.MP4');
 nFrames = xyloObj.NumberOfFrames;
 vidHeight = xyloObj.Height;
 vidWidth = xyloObj.Width;
 for k = 1 : nFrames
     im = read(xyloObj, k);%读取第k帧,存入im中
         imwrite(im, ['original_frame',num2str(k),'.bmp'], 'bmp');%把im存储成图片,并且存储的文件名根据序号改变
         end

1
2
3
4
5
6
7
8
9
10
video_file='E:\工业相机\sp\PIC_0140.MP4';
video=VideoReader(video_file);
frame_number=video.NumberOfFrames;
for i=1:6
image_name=strcat('E:\工业相机\111\',num2str(i));
 image_name=strcat(image_name,'.jpg');
 I=read(video,i);  %读出图片
imwrite(I,image_name,'jpg');        
 I=[];
end

二、查看视频的帧率帧数
以运行第一种方法为例,运行之前先记得包含视频路径不然找不到文件,运行之后,工作区如下
在这里插入图片描述
numFrames即为视频的帧数,点击obj,即可以看到视频的详细信息,时长,帧率等

在这里插入图片描述

三、把图片按指定帧率合成视频

1
2
3
4
5
6
7
8
9
10
11
12
13
srcDic = uigetdir('E:\工业相机\111');
cd(srcDic);
allnames = struct2cell(dir('*.jpeg'));
[k,len]=size(allnames);
aviobj = VideoWriter('driver7.avi');
aviobj.FrameRate = 5;
open(aviobj)
for i = 1:100
name = allnames{1,i};
frame = imread(name);
    writeVideo(aviobj,frame);
end
close(aviobj)