利用MATLAB将视频的每一帧保存成一幅图像,并自动命名。本文方法简单,容易学习。
首先,读入视频。代码如下:
mov = VideoReader('xxxxxx.avi'); % 将xxxxxx.avi读入MATLAB中,并用名为mov的结构体保存
fnum = mov.NumberOfFrames; % 获取视频帧数
接下来,我们要写一个循环来将视频的每一帧保存成.png格式的图片。代码如下:
% 将第i帧写入到xxx文件夹内"img_000x.png"图片中
imgOrder=0; % 图片按顺序编号
for i = 1:3:fnum % i从1到fnum, step=3
Img=read(mov,i); % 读取第i帧;每次读取一帧可防止内存不足
imwrite(Img,['xxx/img_',sprintf('%04d',imgOrder),'.png']) % 将第i帧写入到xxx文件夹内"img_000j.png"图片, j=imgOrder
imgOrder=imgOrder+1;
end
程序运行结束后,会在xxx文件夹中生成fnum/step张图片,每一张图片对应视频中相应的一帧。
如果需要做一些预处理,如选取感兴趣区域ROI、下采样等,可以通过修改倒数第二句话实现:
imwrite(Img,['xxx/img_',sprintf('%04d',imgOrder),'.png']);