I have a code that takes a video and separate it into frames.I would like to NOT keep all the frames, instead i want each frame to be displayed in the previous figure. The code looks like these:
filename = uigetfile; %get the file name
obj = VideoReader(filename);
nFrames=obj.NumberOfFrames;
for k = 1 : nFrames
this_frame = read(obj, k);
thisfig = figure();
thisax = axes('Parent', thisfig);
image(this_frame, 'Parent', thisax);
title(thisax, sprintf('Frame #%d', k));
Another thing that's important is that i calculate intensities from each figure as it comes but i don't need to save the figure after i save the data. Can anyone help me and tell me what i should change in my code? Thanks!
Not sure whether it is a full solution, but one improvement in your code would definately be to move the figure()
command out of the loop.
Maybe this is already sufficient, or maybe you need to assign your image command to a handle as described in this related question , allowing you to remove the last plotted image before you plot a new one.