Prev: www.voguesneakers.com Cheap Jordans,Cheap Nikes,Cheap Nike Shox
Next: Creating matrix of 1's and 0's based on a comparison of values in two other matrixes
From: Cecco Maoni on 11 May 2010 09:13 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 11 May 2010 09:28
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. |