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);
使用は、MATLABの代わりにffmpegのを使用することができます並列化する(関数が代わりに扱うカウンターまたは
spmd
)parfor
を使用することができます... – Rotemがより最適化された機能は、MATLABでだかどうかはわかりませんしかし、この操作は確実に並列化できるので、処理時間を少し削減する必要があります。 –