web-dev-qa-db-ja.com

openCVに「トラッカー」を追加する方法python 2.7

私は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ライブラリにこのモジュールを追加するために何ができますか?

8
Elahe

Opencv-contrib-pythonをインストールするだけです

pip install opencv-contrib-python

そしてそれは動作します!

18
Manish S

最も簡単で最速の方法は、.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_python-3.3.0.10-cp27-cp27m-win32.whl
  • opencv_contrib_python-3.3.0.10-cp27-cp27m-win32.whl

インストールするために、私は走った:

  • python -m pip install opencv_python-3.3.0.10-cp27-cp27m-win32.whl
  • python -m pip install opencv_contrib_python-3.3.0.10-cp27-cp27m-win32.whl

これは機能しましたが、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()

このアプローチは私にとってはうまくいくように思えました。

3
solarflare

Opencv_contribモジュールでOpenCVをコンパイルしていないようです。再コンパイルする必要があります。 this blogpostで、これを行う非常に優れたステップバイステップのチュートリアルを見つけることができます。

編集:

Windowsでコンパイルする必要がある場合は、 this @Osamaによる素晴らしいチュートリアルを使用できます。

それが役に立てば幸い。

2
kyjanond

インストールが終了したら。すべてのファイルは/usr/local/フォルダーにインストールされます。
しかし、それを使用するには、PythonがOpenCVモジュールを見つけることができるはずです。

そのための2つのオプションがあります。

  1. モジュールを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をインストールするたびにこれを行う必要があります。

  2. /usr/local/lib/python2.7/site-packagesPYTHON_PATHを追加します。1回だけ実行します。 ~/.bashrcを開いて次の行を追加し、ログアウトして戻ってください。 export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages。これでOpenCVのインストールが完了しました。ターミナルを開き、cv2をインポートしてみます。

1
Deepak

OpenCVの新しいバージョンは、たとえばTrackerKCF_create()表記を使用します。

新しい例を見つけることができます こちら

0
Bojan Petrovic