Ich arbeite mit Python 2.7 und opencv 3.1 Ich möchte einen Code zum Verfolgen von Objekten folgendermaßen ausführen:
import cv2
import sys
if __== '__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)
aber wenn ich es starte, stehe ich vor diesem Fehler:
AttributeError: 'module' object has no attribute 'Tracker_create'
Hier ist der Quellcode: http://www.learnopencv.com/object-tracking-using-opencv-cpp-python/ .__ Ich suche nach Lösungen, finde aber nichts Nützliches ... Was kann ich tun, um dieses Modul meiner opencv-Bibliothek hinzuzufügen?
Installieren Sie einfach opencv-contrib-python
pip install opencv-contrib-python
und es wird funktionieren!
Ich denke, die einfachste und schnellste Methode ist die Installation über die .whl-Dateien. @foobar gibt die Antwort in den post @kyjanond-Links an, aber Sie können die .whl-Dateien über die folgenden Links erhalten.
OpenCV: https://pypi.python.org/pypi/opencv-python/3.3.0.10
OpenCV Contrib: https://pypi.python.org/pypi/opencv-contrib-python/3.3.0.10
Ich habe OpenCV 3.3.0 auf Python 2.7 installiert, also habe ich Folgendes heruntergeladen:
Zur Installation lief ich:
Dies hat funktioniert, aber in der aktualisierten Version von OpenCV hat sich die Art und Weise geändert, in der die Trackerfunktionen aufgerufen werden.
Der ursprüngliche Code im GitHub-Repository lautete:
tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
tracker_type = tracker_types[1]
tracker = cv2.Tracker_create(tracker_type)
Ich habe das geändert
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()
Dieser Ansatz schien für mich gut zu funktionieren.
Sobald die Installation abgeschlossen ist. Alle Dateien werden im Ordner /usr/local/
installiert.
Damit es jedoch verwendet werden kann, sollte Ihr Python in der Lage sein, OpenCV
Modul zu finden.
Dafür haben Sie zwei Möglichkeiten.
Verschieben Sie das Modul in einen beliebigen Ordner im Python-Pfad: Der Python-Pfad kann durch Eingabe von import sys;print sys.path
im Python-Terminal ermittelt werden. Es werden viele Standorte ausgedruckt. Verschieben Sie /usr/local/lib/python2.7/site-packages/cv2.so
in einen beliebigen Ordner. Zum Beispiel su mv /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/
→ Site-Packages. Sie müssen dies jedoch jedes Mal tun, wenn Sie OpenCV
installieren.
Fügen Sie /usr/local/lib/python2.7/site-packages
zum PYTHON_PATH
hinzu: Dies ist nur einmal durchzuführen. Öffnen Sie einfach ~/.bashrc
und fügen Sie die folgende Zeile hinzu, melden Sie sich ab und kommen Sie zurück. export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
. Damit ist die OpenCV-Installation abgeschlossen. Öffnen Sie ein Terminal und versuchen Sie es mit Import cv2.
Es sieht so aus, als hätten Sie Ihre OpenCV nicht mit opencv_contrib-Modulen kompiliert. Sie müssen es neu kompilieren. Eine sehr gute Schritt-für-Schritt-Anleitung, wie Sie dies tun, finden Sie in this blogpost.
EDIT:
Wenn Sie es unter Windows kompilieren müssen, können Sie this great Tutorial von @Osama verwenden
Ich hoffe es hilft.
Neue Versionen von openCV verwenden beispielsweise die TrackerKCF_create () - Notation.
Neue Beispiele finden Sie hier