在视频帧上绘制矩形

Plotting rectangle on the frames of a video

我正在尝试在我的视频帧上绘制一个矩形。我希望矩形出现在视频的所有帧上。由于我应用了 "hold on",我只能在少数几帧上看到我的边界框。

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

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

交换 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