【MATLAB】读入视频存成帧处理和输出视频
一、读入视频存成帧
VideoReader和strcat和read和imwrite
1.VideoReader
是读入视频函数。用来读入视频。具体用法如下代码所示,具体参数如下图所示:
fileName = 'video11.mp4';
obj = VideoReader(fileName);
2.strcat
字符串连接函数。strcat(str,ptr)
表示将字符串ptr的内容连接到字符串str后,得到一个组合后的字符串str。
3.read
读取视频帧函数。可以通过设置参数获得所需要的帧。
frame = read(obj),%获取所有帧
frame = read(obj,index),%获取指定帧
frame = read(obj, 1); %获取第一帧
frame = read(obj, [1 10]); % 获取前10帧
frame = read(obj, Inf); % 获取最后一帧
frame = read(obj, [50 Inf]); % 获取第50帧之后所有帧
4.imwrite
将图像存入指定文件。imwrite(A,filename,fmt)
A表示待保存图像数据,filename表示保存目录,fmt表示保存格式。
具体例子:
fileName = 'video11.mp4';
obj = VideoReader(fileName);
numFrames = obj.NumberOfFrames;% 帧的总数
for k = 1 : numFrames% 读取数据
frame = read(obj,k);
imshow(frame);%显示帧
imwrite(frame,strcat('E:\研究生\project\frame11\',num2str(k),'.jpg'),'jpg');% 保存帧。
end
二、输出视频
VideoWriter和writeVideo
1.VideoWriter
创建视频文件函数。writerObj=VideoWriter('test.mp4');
创建一个叫test的mp4视频文件。
2.writeVideo
从图像中创建视频。
writerObj = VideoWriter(filename,profile)
- filename:表示单引号引用的字符串来指定视频文件名,文件名可以加扩展名,也可以不加。(支持的视频文件扩展名有:avi,.mj2,.mp4 或.m4v。)若不加则根据profile的设置来自动加上.avi,.mj2,.mp4 或者.m4v的扩展名。
- profile:单引号引用的字符串来指定创建的视频的类型。
具体例子:
writerObj=VideoWriter('test.mp4'); % 定义一个视频文件用来存动画
open(writerObj); % 打开视频文件
frame = getframe; % 把图像存入视频文件中
frame.cdata = imresize(frame.cdata, [H W]); % 设置视频宽高:H为行数(高),W为列数(宽)
writeVideo(writerObj,frame); % 将帧写入视频
close(writerObj); % 关闭视频文件
参考:
https://blog.csdn.net/mingtian715/article/details/50555529
https://blog.csdn.net/qq_23097931/article/details/51108747
https://blog.csdn.net/iracer/article/details/48876473