2017-10-05 5 views
0

Traceback (most recent call last): 
File "test.py", line 10, in <module> 
    tracker = cv2.Tracker_create("MIL") 
AttributeError: module 'cv2.cv2' has no attribute 'Tracker_create 

erhalte ich die oben genannten Fehler, wenn ich zu laufen versuchen:Attribute mit OpenCV in Python

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(0) 

# 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) 

while True: 
    # Read a new frame 
    ok, frame = video.read() 
    if not ok: 
     break 

    # Update tracker 
    ok, bbox = tracker.update(frame) 

    # Draw bounding box 
    if ok: 
     p1 = (int(bbox[0]), int(bbox[1])) 
     p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3])) 
     cv2.rectangle(frame, p1, p2, (0,0,255)) 

    # Display result 
    cv2.imshow("Tracking", frame) 

    # Exit if ESC pressed 
    k = cv2.waitKey(1) & 0xff 
    if k == 27 : break 

ich hier eine Antwort gefunden: How to add "Tracker" in openCV python 2.7

Aber das verwirrt mich mehr. Ich bin auf MacOSX und ich fange gerade mit OpenCV an und ich bin nicht wirklich sicher, wie man OpenCV mit den korrekten Modulen neu kompiliert.

Vielen Dank im Voraus, und Entschuldigung, wenn ich etwas offensichtlich vermisse.

+0

Haben Sie 'opencv_contrib' Modul installiert werden? 'Tracker' befindet sich unter' Tracking-Modul', das im 'opencv'-Core nicht verfügbar ist. – thewaywewere

Antwort

1

Es war also kein Fall der Installation, aber der Name des Konstruktors hatte sich geändert.

tracker = cv2.Tracker_create("MIL") 

Sollte sein:

tracker = cv2.TrackerMIL_create() 
+0

Diese Antwort sollte akzeptiert werden, hoffe, dass die Person, die diese Frage stellt, die Antwort akzeptiert, –