From: Cecco Maoni on
Guys I need to convert an .avi movie in just pictures whose those are his frames.
I've used a program called Movie editor which is a program written for Matlab but I don't know why it changes color to the output pictures.

Thanks

Cecco
From: ImageAnalyst on
On May 11, 9:13 am, "Cecco Maoni" <cecco_on_l...(a)hotmail.com> wrote:
> Guys I need to convert an .avi movie in just pictures whose those are his frames.
> I've used a program called Movie editor which is a program written for Matlab but I don't know why it changes color to the output pictures.
>
> Thanks
>
> Cecco

-------------------------------------------------------------------------------------------------
Study this demo:
IMPORTANT: The newsreader may split some lines into two. You will
need to join them into one again.

%-------------------------- begin code
-----------------------------------------------------------------

% Demo macro to extract frames from an avi movie to separate files.
% by ImageAnalyst
clc;
close all;

% Change the current folder to the folder of this m-file.
% (The line of code below is from Brett Shoelson of The Mathworks.)
if(~isdeployed)
cd(fileparts(which(mfilename)));
end

% Open the rhino.avi demo movie that ships with MATLAB.
movieFullFileName = 'C:\Program Files\MAT1LAB\R2008b\toolbox\images
\imdemos\rhinos.avi';
% Check to see that it exists.
if ~exist(movieFullFileName, 'file')
strErrorMessage = sprintf('File not found:\n%s\nYou can choose a new
one, or cancel', movieFullFileName);
response = questdlg(strErrorMessage, 'File not found', 'OK - choose a
new movie.', 'Cancel', 'OK - choose a new movie.');
if strcmpi(response, 'OK - choose a new movie.')
[baseFileName, folderName, FilterIndex] = uigetfile('*.avi');
if ~isequal(baseFileName, 0)
movieFullFileName = fullfile(folderName, baseFileName);
else
return;
end
else
return;
end
end
try
mov = aviread(movieFullFileName);
% movie(mov);
% Make a special output folder to hold all the separate movie frames
% as their own image files.
outputFolder = fullfile(cd, 'Rhino Movie');
if ~exist(outputFolder, 'dir')
mkdir(outputFolder);
end
% Determine how many frames there are.
numberOfFrames = size(mov, 2);
numberOfFramesWritten = 0;
% Prepare a figure to show the images.
figure;
screenSize = get(0, 'ScreenSize');
newWindowPosition = [1 1 screenSize(3)/2 screenSize(4)/2];
set(gcf, 'Position', newWindowPosition); % Maximize figure.
% Loop through the movie, writing all frames out.
% Each frame will be in a separate file with unique name.
for frame = 1 : numberOfFrames
% Extract the frame from the movie structure.
thisFrame = mov(frame).cdata;
% Display it
image(thisFrame);
drawnow; % Force it to refresh the window.
% Construct an output iamge file name.
outputBaseFileName = sprintf('Frame %4.4d.png', frame);
outputFullFileName = fullfile(outputFolder, outputBaseFileName);
% Write the image array to the output file.
imwrite(thisFrame, outputFullFileName, 'png');
% Update user with the progress. Display in the command window.
progressIndication = sprintf('Wrote frame %4d of %d.', frame,
numberOfFrames);
disp(progressIndication);
% Increment frame count (should eventually = numberOfFrames
% unless an error happens).
numberOfFramesWritten = numberOfFramesWritten + 1;
end
catch ME
% Some error happened if you get here.
stError = lasterror;
strErrorMessage = sprintf('Error extracting movie frames from:\n\n%s\n
\nError: %s\n\n)', movieFullFileName, stError.message);
msgboxw(strErrorMessage);
end
% Alert user that we're done.
finishedMessage = sprintf('Done! It wrote %d frames to folder\n"%s"',
numberOfFramesWritten, outputFolder);
disp(finishedMessage); % Write to command window.
msgbox(finishedMessage); % Also pop up a message box.