How do i separate a video into frames without displaying all the frames in different figures?

StackOverflow https://stackoverflow.com/questions/18736091

  •  28-06-2022
  •  | 
  •  

Domanda

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!

È stato utile?

Soluzione

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.

Altri suggerimenti

    filename = uigetfile; %get the file name
    obj = VideoReader(filename);
    nFrames=obj.NumberOfFrames;
    thisfig = figure();
 for k = 1 : nFrames  
    this_frame = read(obj, k);
    thisax = axes('Parent', thisfig);
    image(this_frame, 'Parent', thisax);
    if k==nFrames
    title(thisax, sprintf('Frame #%d', k));
    end
end
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top