Python CSRT算法不更新目标

Python CSRT算法不更新目标,python,opencv,image-processing,video-tracking,Python,Opencv,Image Processing,Video Tracking,我正在使用OPENCV内置跟踪器CSRT进行目标检测和跟踪,我发现它最适合使用,但我有一个问题,当目标离开帧时,它在他跟踪的最后位置仍然有一个边界框,当目标返回帧时,它不跟踪它。从OPENCV文档中,我知道这是短期跟踪器,但有没有办法知道目标现在不在我使用此命令的帧中 success, boxes = multiTracker.update(frame) print("Success",success) 要知道它是否会生成false,但不会。我必须使用这个算法进行实时跟踪。此外,我不愿意使用像

我正在使用OPENCV内置跟踪器CSRT进行目标检测和跟踪,我发现它最适合使用,但我有一个问题,当目标离开帧时,它在他跟踪的最后位置仍然有一个边界框,当目标返回帧时,它不跟踪它。从OPENCV文档中,我知道这是短期跟踪器,但有没有办法知道目标现在不在我使用此命令的帧中

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

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

我也在使用openCV(C++)的CSRT跟踪器。 在我看来,你有两个选择:

1) 您可以编写一个算法来检测对象是否仍在边界框中。要做到这一点,您可以从openCV的跟踪模块(cf
CSRTImpl::estimate\u new\u position
)的trackerCSRT.cpp中实现的方法中获得灵感。在此函数中,params.psr_threshold表示被跟踪对象是否丢失的阈值。因此,如果编写类似的算法,您将能够确定对象是否不在边界框中(在该算法中,围绕<强> PSRYValue<<强> > 0.1,您可以考虑丢失它)

2) 我建议的第二个选项是使用函数CSRT::create(const CSRT::Params¶meters)初始化CSRT跟踪器,并将更高的值传递给psr_阈值(例如0.1),以便拥有更敏感的跟踪器。在这种情况下,您的跟踪器将不会继续跟踪空白区域,但将返回false(目标丢失),这已经是一种改进。 根据您的应用程序,您需要实现一些功能,以便在视频中再次找到目标。现在,这被称为长期跟踪


祝你好运

我还在使用openCV(C++)的CSRT跟踪器。 在我看来,你有两个选择:

1) 您可以编写一个算法来检测对象是否仍在边界框中。要做到这一点,您可以从openCV的跟踪模块(cf
CSRTImpl::estimate\u new\u position
)的trackerCSRT.cpp中实现的方法中获得灵感。在此函数中,params.psr_threshold表示被跟踪对象是否丢失的阈值。因此,如果编写类似的算法,您将能够确定对象是否不在边界框中(在该算法中,围绕<强> PSRYValue<<强> > 0.1,您可以考虑丢失它)

2) 我建议的第二个选项是使用函数CSRT::create(const CSRT::Params¶meters)初始化CSRT跟踪器,并将更高的值传递给psr_阈值(例如0.1),以便拥有更敏感的跟踪器。在这种情况下,您的跟踪器将不会继续跟踪空白区域,但将返回false(目标丢失),这已经是一种改进。 根据您的应用程序,您需要实现一些功能,以便在视频中再次找到目标。现在,这被称为长期跟踪


祝你好运

你能在python中找到这个吗?根据文档,CSRT::create(const CSRT::Params¶meters)的python等价函数是retval=cv.TrackerCSRT_create(),因此你不能在python中使用自己的参数初始化。因此,这意味着解决方案2不适合您。解决方案是在Python中编写一个算法来检测跟踪器何时丢失了目标(通过C++算法的启发,但它相当长,不确定你有Python中所有的功能可以这么做)。抱歉,openCV Python中的跟踪器的实现是有限的!你能在python中找到这个吗?根据文档,CSRT::create(const CSRT::Params¶meters)的python等价函数是retval=cv.TrackerCSRT_create(),因此不能在python中使用自己的参数初始化。因此,这意味着解决方案2不适合您。解决方案是在Python中编写一个算法来检测跟踪器何时丢失了目标(通过C++算法的启发,但它相当长,不确定你有Python中所有的功能可以这么做)。抱歉,openCV Python中的跟踪器的实现是有限的!