0
我試圖提取一些視頻(其中每個包含大約13000幀)的所有幀與此代碼,但它需要太長時間來提取所有的幀。還有更快的方法嗎?用matlab提取視頻幀
filename = 'S.avi';
mov = VideoReader(filename);
% Output folder
outputFolder = fullfile(cd, 'S');
mkdir(outputFolder);
%getting no of frames
framee=100000;
numberOfFrames = mov.NumberOfFrames;
numberOfFramesWritten = 0;
for frame = 1:12525
thisFrame = read(mov, frame);
framee=framee+1;
outputBaseFileName = sprintf('%3.3d.png', framee);
outputFullFileName = fullfile(outputFolder, outputBaseFileName);
imwrite(thisFrame, outputFullFileName, 'png');
% progressIndication = sprintf('Wrote frame %4d of %d.', frame,numberOfFrames);
% disp(progressIndication);
numberOfFramesWritten = numberOfFramesWritten + 1;
end
progressIndication = sprintf('Wrote %d frames to folder "%s"',numberOfFramesWritten, outputFolder);
disp(progressIndication);
使用可以使用的ffmpeg代替Matlab的... – Rotem
我不知道是否有在MATLAB或沒有更優化的功能,但這個操作絕對可並行化,所以應該縮短處理時間。 –