如何在不显示不同图形中的所有帧的情况下将视频分成帧?

时间:2013-09-11 08:20:50

标签: matlab figure videodisplay

我有一个代码,它采用视频并将其分成帧。我不想保留所有帧,而是希望每个帧都显示在上图中。 代码如下所示:

 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));

另一件重要的事情是,我计算每个图形的强度,但是在保存数据后我不需要保存图形。 任何人都可以帮助我,并告诉我我的代码应该改变什么? 谢谢!

2 个答案:

答案 0 :(得分:1)

不确定它是否是一个完整的解决方案,但代码中的一个改进肯定是将figure()命令移出循环。

也许这已经足够了,或者您需要按照handle中的说明将图像命令分配到this related question,以便在绘制新图像之前删除最后绘制的图像。< / p>

答案 1 :(得分:1)

    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