How do I save multiple frames from a video?
3 views (last 30 days)
Show older comments
I am trying to extract 10 frames from any video (evenly spaced time intervals throughout its duration). It is only saving one photo (the very first frame). How do I get all 10 frames and save them? I was hoping my third to last line would solve the problem, but it did not. It saves directly to my matlab folder, and I am not too worried about that part.
%Pick desired video file
startingFolder = pwd; % or 'C:\wherever';
if ~exist(startingFolder, 'dir')
% If that folder doesn't exist, just start in the current folder.
startingFolder = pwd;
end
defaultFileName = fullfile(startingFolder, '*.*');
[baseFileName, folder] = uigetfile(defaultFileName, 'Select a file');
if baseFileName == 0
% User clicked the Cancel button.
return;
end
fullFileName = fullfile(folder, baseFileName); % holds chosen video file
obj = VideoReader(fullFileName);
frameReader = readFrame(obj);
get(obj)
% read the total number of frames
numFrames = ceil(obj.FrameRate*obj.Duration); %maybe subtract 1, may not be necessary here
% file format of the frames to be saved in
ST ='.jpg';
% reading and writing the frames
vid = readFrame(obj);
for x = 1 : obj.Duration/10 : numFrames
imwrite(vid(:,:,:,x),strcat('ChosenFrame-',num2str(x),'.jpg'));
end
0 Comments
Answers (1)
Mili Goyal
on 28 Jun 2021
I think the readFrame outside the for loop could be the problem. Try placing it inside the for loop. Refer to the following MATLAB Answer for better clarification.
2 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!