我有数千个30秒/ 20fps / .avi视频(每个视频总共600帧)。我需要自动对这些视频进行二次采样,以便每隔100帧(每5秒)保存一次。任何图片格式都没问题。
在Matlab(R2015b)或Python +库中有没有简单的方法可以做到这一点?
答案 0 :(得分:1)
在MATLAB中:
您可以使用VideoWriter
对象或imwrite
,具体取决于所需的输出格式:
vin = VideoReader('vid1.mp4');
vout = VideoWriter('vid-out.mp4');
framenum = 0;
everyNframe = 100;
vout.open();
while vin.hasFrame
frame = vin.readFrame;
if rem(framenum,everyNframe) == 0
vout.writeVideo(frame);
% OR
imwrite(frame, [num2str(framenum,'%04i') '.jpg']);
disp(framenum)
end
framenum = framenum + 1;
end
vout.close();
另一个选项是将输入视频设置为下一个想要的帧是通过设置vin.CurrentTime
,但由于某种原因,它比简单地读取100帧要慢。