首先,从工具箱中得到的seq:
数组s_frames:
传送给工具箱的结果:
results=run_tracker(seq,~,~);
results: (以skiing为例):
其中results.res:
保存的是每个跟踪结果,那么我们需要的做的就是将代码中的bounding box记录下来,然后进行输出。
为了防止返回的results不能直接使用,我先用BACF和CSRDCF进行了实验:
第二帧中返回的results分别是:
BACF:
CSRDCF:
一致,那么得出结论,bb的值就是results,保存下来即可。
使用一个空数组来保存bb的值:
num_frames = size(seq.s_frames,1);
rect_position = zeros(num_frames, 4);
出现的问题:
bounding box和目标不一致,经过查看发现是代码的问题,起始帧和结束帧没有标注清楚,导致所有序列都从第一帧开始,最后一帧结束。
修改开始帧,frame=seq.startFrame,结果导致循环出错,于是修改为:
frame = 1;
read_frame = seq.startFrame + frame -1;
read_frame代表读取的帧序列,frame用来进行循环。
至此,修改结果完毕。