1

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

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

另一件重要的事情是我计算每个数字的强度,但我不需要在保存数据后保存数字。谁能帮助我并告诉我应该在我的代码中更改什么?谢谢!

4

2 回答 2

1

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

也许这已经足够了,或者您可能需要将您的图像命令分配给此相关问题中描述的句柄,从而允许您在绘制新图像之前删除最后绘制的图像。

于 2013-09-11T08:31:20.260 回答
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
于 2013-09-11T09:33:12.513 回答