CSRT算法未更新目标

时间:2019-02-20 11:27:11

标签: python opencv image-processing video-tracking

我正在使用OPENCV内置跟踪器CSRT进行对象检测和跟踪,我发现它最适合使用,但是在这里我有一个问题,当目标脱离框架时,它仍然在目标到达时跟踪的最后一个位置有一个边界框回到框架,它不会跟踪。从OPENCV文档中,我知道这是短期跟踪器,但是有什么方法可以知道目标不在我使用的命令范围内

success, boxes = multiTracker.update(frame)
print("Success",success)

知道它是否生成false,但是不会生成false。我必须使用此算法进行实时跟踪。而且,我不愿意使用像yolo或TF这样的高级ML库,所以如果有人可以帮助它或使用更好的跟踪器,那么我会不愿意。

1 个答案:

答案 0 :(得分:1)

我还使用来自openCV(C ++)的CSRT跟踪器。 我认为您有两种选择:

1)您可以编写一种算法来检测对象是否仍在边界框中。为此,您可以从openCV的跟踪模块(cf CSRTImpl::estimate_new_position)的trackerCSRT.cpp中实现的方法中获得启发。在此函数中,params.psr_threshold表示所跟踪对象是否丢失的阈值。因此,如果您编写类似的算法,则可以确定对象是否不在边界框内(在该算法上, psr_threshold <0.1左右,您可以认为它丢失了

2)我建议的第二个选择是使用函数CSRT :: create(const CSRT :: Params&parameters)初始化CSRT跟踪器,然后将较高的值传递给psr_threshold(例如0.1),以获取跟踪器这比较敏感。在这种情况下,您的跟踪器将不会继续跟踪空白区域,但会返回false(目标丢失),这已经是一个改进。 根据您的应用程序,您将需要实施一些措施才能在视频中再次找到目标。现在,这称为长期跟踪。

祝你好运