Using images in a for loop

1 vue (au cours des 30 derniers jours)
Sneheet
Sneheet le 31 Jan 2014
Commenté : Image Analyst le 1 Fév 2014
I've split a video into frames and written them to my disk individually. Now I need to find the difference between 2 consecutive frames. How do I call those images in he loop? The images are saved as Frame 0001.png, Frame 0002.png....etc

Réponse acceptée

Walter Roberson
Walter Roberson le 31 Jan 2014

Plus de réponses (1)

Image Analyst
Image Analyst le 31 Jan 2014
I do that in my demo. Though I do the differencing as the frames are read in. In the latter half of the demo, after I've written out individual frames to individual files, I read in individual frames back in. You could of course switch the subtraction step to there if you want. See attachment (below in blue text).
  5 commentaires
Shivaputra Narke
Shivaputra Narke le 1 Fév 2014
Go to matlab help and search for imwrite. If you are new to Matlab you can use Matlab help.
Image Analyst
Image Analyst le 1 Fév 2014
It's right there in the code. Take another look:
% Construct an output image file name.
outputBaseFileName = sprintf('Frame %4.4d.png', frame);
outputFullFileName = fullfile(outputFolder, outputBaseFileName);
% Extract the image with the text "burned into" it.
frameWithText = getframe(gca);
% frameWithText.cdata is the image with the text
% actually written into the pixel values.
% Write it out to disk.
imwrite(frameWithText.cdata, outputFullFileName, 'png');
You can make outputFolder whatever you want. For example I did this:
% Make up a special new output subfolder for all the separate
% movie frames that we're going to extract and save to disk.
% (Don't worry - windows can handle forward slashes in the folder name.)
folder = pwd; % Make it a subfolder of the folder where this m-file lives.
outputFolder = sprintf('%s/Movie Frames from %s', folder, baseFileName);
% Create the folder if it doesn't exist already.
if ~exist(outputFolder, 'dir')
mkdir(outputFolder);
end
But you could just replace that with your own folder:
outputFolder = 'd:\Narke\Images'; % Or whatever.
% Create the folder if it doesn't exist already.
if ~exist(outputFolder, 'dir')
mkdir(outputFolder);
end
If it's just certain frames, you can set outputFolder on a frame by frame basis inside the loop if you wanted to vary it by frame number or some other condition/criteria.

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by