目前OpenCV4.2版本中自带了8个目标跟踪算法的实现。
BOOSTING:算法原理类似于Haar cascades (AdaBoost),是一种很老的算法。这个算法速度慢并且不是很准。
MIL:比BOOSTING准一点。
KCF:速度比BOOSTING和MIL更快,与BOOSTING和MIL一样不能很好地处理遮挡问题。
CSRT:比KCF更准一些,但是速度比KCF稍慢。
MedianFlow:对于快速移动的目标和外形变化迅速的目标效果不好。
TLD:会产生较多的false-positives。
MOSSE:算法速度非常快,但是准确率比不上KCF和CSRT。在一些追求算法速度的场合很适用。
GOTURN:OpenCV中自带的唯一一个基于深度学习的算法。运行算法需要提前下载好模型文件。
综合算法速度和准确率考虑,个人觉得CSRT、KCF、MOSSE这三个目标跟踪算法较好。
使用OpenCV来目标跟踪
新建文件opencv_objecttracking.py。代码如下,首先使用TrackerXXX_create()方法创建目标跟踪类对象,然后调用tracker.init方法初始化需要跟踪的目标,这里使用了cv2.selectROI来手动选择目标框,然后使用tracker.update方法来跟踪目标,最后将跟踪结果可视化出来。
# import the necessary packagesfrom imutils.video import V