【OpenCV python】 Tracking APIでのAttributeErrorの解決法
OpenCV pythonで画像内の指定したオブジェクトを追従するTracking APIを実装していたらタイトルのエラーで少し混乱したので、メモ。
状況
環境
OS: Windows10 OpenCV: 4.5.2 python: 3.7.7
エラー文
AttributeError: module 'cv2' has no attribute 'TrackerMedianFlow_create'
該当箇所は
tracker = cv2.TrackerMedianFlow_create()
でした。
解決法
ソースコードにて、cv2.TrackerMedianFlow_create()
としていた部分をcv2.legacy.TrackerMedianFlow_create()
と変更することで解決。
OpenCV 4.5.1以降でlegacyクラスに一部移行されていたことによって、当該の関数が見つからなかったようです。ちなみに、MedianFlow以外にもいくつかのオブジェクトトラッカーがlegacyクラスに移動されています。
ざっくりとですが、バージョンごとによる使えるtrackerの種類は次項の通りです。
詳細および最新情報は、OpenCV: Tracking APIよりご確認ください!
バージョンごとのTrackerの種類
legacyでないものは、cv2.Tracker*_create()
で利用可能です。
※*
の部分には使いたいTrackerの名前をいれてください。
ver. 4.5.3 (DaSiamRPNが追加)
9種類利用可能。
- CSRT
- DaSiamRPN
- GOTURN
- KCF
- MIL
以下、cv2.legacy.Tracker*_create()
で利用可能
- Boosting
- MOSSE
- MedianFlow
- TLD
ver. 4.5.1~4.5.2 (一部Trackerがlegacyへ移動)
8種類利用可能。
- CSRT
- GOTURN
- KCF
- MIL
以下、cv2.legacy.Tracker*_create()
で利用可能
- Boosting
- MOSSE
- MedianFlow
- TLD