2017-02-28 41 views
1

我试图在我的视频的框架上绘制矩形。我想要矩形出现在视频的所有帧上。由于我已经应用了“保持”,所以我只能在几帧中看到我的边界框。在视频的框架上绘制矩形

v = VideoReader('test.mp4'); 
numFrames = get(v,'NumberOfFrames'); 
for k=1:numFrames 
    image = read(v,k); 
    rectangle('Position',[0 0 100 100],'EdgeColor','r','LineWidth', 3); 
    hold on; 
    imshow(image); 
end 

当我尝试删除保持功能的矩形没有被绘制在框架上。任何帮助,将不胜感激。

+0

当您转到下一个框架时,您必须移除对该图的保留。因此,在'imshow'之后插入'hold'' –

+0

我试过了,但没有工作。我只是看到一个带有边界框的图像,但是我看不到其他帧。 –

回答

1

调换imshowrectangle调用,以便imshow创建一个将首先适合图像的图形。在imshow之后使用rectangle来最终绘制矩形。最后,在imshow之后使用drawnow,以便刷新图形缓冲区并刷新图形。您还需要拨打rectangle之间的hold on;hold off;

v = VideoReader('test.mp4'); 
numFrames = get(v,'NumberOfFrames'); 
for k=1:numFrames 
    image = read(v,k); 
    imshow(image); 
    hold on; 
    rectangle('Position',[0 0 100 100],'EdgeColor','r','LineWidth', 3); 
    hold off; 
    drawnow; 
end 
+0

为了更加明确,它是一个很好的练习而不是在绘图开始时只使用'hold off'你'clf'! –

+0

谢谢。它工作并且边界框被打印在视频的每一帧上。 –