用 OpenCV 實現八種不同的目標跟蹤演算法

2021-10-08 07:35:24 字數 1712 閱讀 3521

1、boosting tracker

和haar cascades(adaboost)背後所用的機器學習演算法相同,但是距其誕生已有十多年了。這一追蹤器速度較慢,並且表現不好,但是作為元老還是有必要提及的。(最低支援opencv 3.0.0)

2、mil tracker

比上乙個追蹤器更精確,但是失敗率比較高。(最低支援opencv 3.0.0)

3、kcf tracker

比boosting和mil都快,但是在有遮擋的情況下表現不佳。(最低支援opencv 3.1.0)

4、csrt tracker

比kcf稍精確,但速度不如後者。(最低支援opencv 3.4.2)

5、medianflow tracker

在報錯方面表現得很好,但是對於快速跳動或快速移動的物體,模型會失效。(最低支援opencv 3.0.0)

6、tld tracker

我不確定是不是opencv和tld有什麼不相容的問題,但是tld的誤報非常多,所以不推薦。(最低支援opencv 3.0.0)

7、mosse tracker

速度真心快,但是不如csrt和kcf的準確率那麼高,如果追求速度選它準沒錯。(最低支援opencv 3.4.1)

8、goturn tracker

這是opencv中唯一一深度學習為基礎的目標檢測器。它需要額外的模型才能執行,本文不詳細講解。(最低支援opencv 3.2.0)

我個人的建議:

如果追求高準確度,又能忍受慢一些的速度,那麼就用csrt

如果對準確度的要求不苛刻,想追求速度,那麼就選kcf

純粹想節省時間就用mosse

從opencv 3開始,目標檢測器得到了快速發展,下表總結了不同版本的opencv中可適用的追蹤器:

想要用opencv進行目標追蹤,首先開啟乙個新檔案,將它命名為opencv_object_tracker.py,然後插入以下**:

#import the necessary packages

from imutils.video import videostream

from imutils.video import fps

import argparse

import imutils

import time

import cv2

然後開始分析命令列引數:

ap = argparse.argumentparser()

ap.add_argument("-v", "--video",type=str,

help="path to input video file")

ap.add_argument("-t", "--tracker",type=str,default="kcf",

help="opencv object tracker type")

args = vars(ap.parse_args())

我們的命令列引數包括:

OpenCV中八種不同的目標追蹤演算法

這八種工具包括 boosti ng tracker 和haar cascades adaboost 背後所用的機器學習演算法相同,但是距其誕生已有十多年了。這一追蹤器速度較慢,並且表現不好,但是作為元老還是有必要提及的。最低支援opencv 3.0.0 kcf tracker 比boosting和m...

用OpenCV實現目標追蹤的八種方法

目標跟蹤作為機器學習的乙個重要分支,加之其在日常生活 軍事行動中的廣泛應用,很多國內外學者都對此頗有研究。本文將討論opencv上八種不同的目標追蹤演算法。所以,我們想應用一種一次性的目標檢測方法,然後在之後的幀上都能進行目標追蹤,使這一任務更加快速 更高效。這裡的問題是 opencv能幫我們達到這...

八皇后12種本質不同的解

在八皇后的92種解中有大量的解是本質重複的 可以通過左右對稱,上下對稱,對角線對稱,旋轉來互相轉化 只有十二種解是本質不同的。include int w 1 intcheck int m void put void intcheck3 void intcheck2 void void firstdi...