0

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

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

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

4

1 回答 1

2

我还在使用 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 ¶meters) 初始化您的 CSRT 跟踪器,并将更高的值传递给 psr_threshold(例如 0.1),以便拥有一个更多的跟踪器敏感的。在这种情况下,您的跟踪器不会继续跟踪空白区域,而是会返回 false(目标丢失),这已经是一种改进。根据您的应用程序,您将需要实施一些措施才能在视频中再次找到目标。现在,这称为长期跟踪。

祝你好运

于 2019-02-20T15:44:37.000 回答