单目标跟踪错误
错误描述:在利用opencv库做目标跟踪时,报错如下:
AttributeError: module 'cv2' has no attribute 'TrackerBoosting_create'
# 或者
AttributeError: module 'cv2' has no attribute 'TrackerTLD_create'
# 或者
AttributeError: module 'cv2' has no attribute 'TrackerMedianFlow_create'
# 或者
AttributeError: module 'cv2' has no attribute 'TrackerMOSSE_create'
报错原因:opencv版本包括4.5.1以上,都不支持这些函数;网上其它解决方法多数提出安装 ‘opencv-contrib-python’,但是个人试过无法解决该问题;
解决方法:通过cv2.legacy来调用这些函数,比如 ‘cv2.TrackerBoosting_create’ 改成 ‘cv2.legacy.TrackerBoosting_create’;其它也类似改动即可!
原始代码:
OPENCV_OBJECT_TRACKERS = {
"csrt": cv2.TrackerCSRT_create,
"kcf": cv2.TrackerKCF_create,
"boosting": cv2.TrackerBoosting_create,
"mil": cv2.TrackerMIL_create,
"tld": cv2.TrackerTLD_create,
"medianflow": cv2.TrackerMedianFlow_create,
"mosse": cv2.TrackerMOSSE_create
}
改动后代码:
OPENCV_OBJECT_TRACKERS = {
"csrt": cv2.TrackerCSRT_create,
"kcf": cv2.TrackerKCF_create,
"boosting": cv2.legacy.TrackerBoosting_create,
"mil": cv2.TrackerMIL_create,
"tld": cv2.legacy.TrackerTLD_create,
"medianflow": cv2.legacy.TrackerMedianFlow_create,
"mosse": cv2.legacy.TrackerMOSSE_create
}
另外,还有一种错误,因为opencv中实际提供了8种方法
GOTURN tracker方法无法运行。
这是OpenCV中唯一深度学习为基础的目标检测器。它需要额外的模型才能运行,本文不详细讲解。
多目标错误
解决多目标检测中Expected Ptrcv::legacy::Tracker for argument 'newTracker’问题。
在多目标跟踪中,更换电脑后发现原程序报出问题
在opencv4.5.3版本中cv.MultiTracker_create()被取消
解决方法一:降低opencv版本,首先卸载原版本opencv,同时下载opencv-python3.4.3版本以及opencv-contrib-python3.4.3版本即可
解决方法二:将原函数改为cv.legacy.MultiTracker_create()后
出现新的问题
在后续add添加跟踪目标过程中将cv.MultiTracker_create()全部改为cv.legacy.MultiTracker_create()解决
在代码中,多目标跟踪的相当于选定的ROI区域的个数先在代码中给定,然后再一个一个的去添加选用的追踪器类型。