2017-02-28 47 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

謝謝。它工作並且邊界框被打印在視頻的每一幀上。 –