Using images in a for loop

1 visualización (últimos 30 días)
Sneheet
Sneheet el 31 de En. de 2014
Comentada: Image Analyst el 1 de Feb. de 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

Respuesta aceptada

Walter Roberson
Walter Roberson el 31 de En. de 2014

Más respuestas (1)

Image Analyst
Image Analyst el 31 de En. de 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 comentarios
Shivaputra Narke
Shivaputra Narke el 1 de Feb. de 2014
Go to matlab help and search for imwrite. If you are new to Matlab you can use Matlab help.
Image Analyst
Image Analyst el 1 de Feb. de 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.

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by