如何根据csv文件中的信息在视频帧上绘制矩形

时间:2016-04-01 18:54:11

标签: matlab csv

我设法逐帧读取视频文件

infile= ['baseballField.avi'];
readerobj=VideoReader(infile);
groundtruth = csvread('baseballField-groundtruth.top');
for i=1:2:20
    vidframe=read(readerobj,i); 
    imshow(vidframe);               
    drawnow                     
end

我也读过csv文件,如上所示。 csv文件的每个记录包含标记视频中每个人的值,帧的编号和人体的框坐标。

我想在每个视频帧中为每个人绘制身体边界框,覆盖在视频数据的顶部。我如何绘制这些数据?

1 个答案:

答案 0 :(得分:0)

您可以使用内置的rectangle功能在当前轴上绘制矩形。

imshow(vidframe);
hold on
rectangle('Position', [x,y,width,height])

作为旁注,您每次通过循环创建新图像。最好将句柄存储到图像对象,只需更新循环内图像的CData属性。

infile= ['baseballField.avi'];
readerobj=VideoReader(infile);
groundtruth = csvread('baseballField-groundtruth.top');

vidframe = read(readerobj, 1);
him = imshow(vidframe);
hold on
hrect = rectangle('Position', pos{1});
drawnow

for k = 1:2:20  
    set(him, 'CData', read(readerobj, k));
    set(hrect, 'Position', pos{k}) 
    drawnow                     
end