私はpython 2.7とopencv 3.1で作業しています。これでオブジェクトを追跡するためのコードを実行したいです:
import cv2
import sys
if __name__ == '__main__' :
# Set up tracker.
# Instead of MIL, you can also use
# BOOSTING, KCF, TLD, MEDIANFLOW or GOTURN
tracker = cv2.Tracker_create("MIL")
# Read video
video = cv2.VideoCapture("videos/chaplin.mp4")
# Exit if video not opened.
if not video.isOpened():
print "Could not open video"
sys.exit()
# Read first frame.
ok, frame = video.read()
if not ok:
print 'Cannot read video file'
sys.exit()
# Define an initial bounding box
bbox = (287, 23, 86, 320)
# Uncomment the line below to select a different bounding box
# bbox = cv2.selectROI(frame, False)
# Initialize tracker with first frame and bounding box
ok = tracker.init(frame, bbox)
しかし、実行すると、このエラーに直面します:
AttributeError: 'module' object has no attribute 'Tracker_create'
ソースコードは次のとおりです。 http://www.learnopencv.com/object-tracking-using-opencv-cpp-python/ ソリューションのために、私は何も有用な見つけることができません...私は私のopencvライブラリにこのモジュールを追加するために何ができますか?
Opencv-contrib-pythonをインストールするだけです
pip install opencv-contrib-python
そしてそれは動作します!
最も簡単で最速の方法は、.whlファイルを使用してインストールすることだと思います。 @foobarは@kyjanondへのリンクの投稿で回答を提供しますが、次のリンクから.whlファイルを取得できます。
OpenCV: https://pypi.python.org/pypi/opencv-python/3.3.0.1
OpenCV Contrib: https://pypi.python.org/pypi/opencv-contrib-python/3.3.0.1
OpenCV 3.3.0をPython 2.7にインストールしたので、ダウンロードしました:
インストールするために、私は走った:
これは機能しましたが、OpenCVの更新バージョンでは、トラッカー関数の呼び出し方法が変更されました。
GitHubリポジトリの元のコードは次のとおりです。
tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
tracker_type = tracker_types[1]
tracker = cv2.Tracker_create(tracker_type)
これを
tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
tracker_type = tracker_types[1]
if tracker_type == tracker_types[0]:
tracker = cv2.TrackerBoosting_create()
Elif tracker_type == tracker_types[1]:
tracker = cv2.TrackerMIL_create()
Elif tracker_type == tracker_types[2]:
tracker = cv2.TrackerKCF_create()
Elif tracker_type == tracker_types[3]:
tracker = cv2.TrackerTLD_create()
Elif tracker_type == tracker_types[4]:
tracker = cv2.TrackerMedianFlow_create()
Elif tracker_type == tracker_types[5]:
tracker = cv2.TrackerGOTURN_create()
このアプローチは私にとってはうまくいくように思えました。
インストールが終了したら。すべてのファイルは/usr/local/
フォルダーにインストールされます。
しかし、それを使用するには、PythonがOpenCV
モジュールを見つけることができるはずです。
そのための2つのオプションがあります。
モジュールをPython Pathの任意のフォルダーに移動します:Pythonターミナルにimport sys;print sys.path
と入力すると、Pythonパスを見つけることができます。多くの場所を印刷します。 /usr/local/lib/python2.7/site-packages/cv2.so
をこのフォルダーのいずれかに移動します。たとえば、su mv /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/
→site-packages。ただし、OpenCV
をインストールするたびにこれを行う必要があります。
/usr/local/lib/python2.7/site-packages
にPYTHON_PATH
を追加します。1回だけ実行します。 ~/.bashrc
を開いて次の行を追加し、ログアウトして戻ってください。 export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
。これでOpenCVのインストールが完了しました。ターミナルを開き、cv2をインポートしてみます。
OpenCVの新しいバージョンは、たとえばTrackerKCF_create()表記を使用します。
新しい例を見つけることができます こちら