Ich versuche, alle Frames einiger Videos (jeder von ihnen enthält etwa 13000 Frames) mit diesem Code zu extrahieren, aber es dauert zu lange, um alle Frames zu extrahieren. Gibt es einen schnelleren Weg?Extrahieren von Frames von Video mit 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);
Verwenden ffmpeg statt Matlab verwenden können ... – Rotem
Ich weiß nicht, ob es eine optimierte Funktion in Matlab oder nicht , aber diese Operation ist definitiv parallelisierbar, so dass sich Ihre Verarbeitungszeit ein wenig verringern sollte. –