2017-02-22 3 views
4

Je travaille avec Python 2.7 et OpenCV 3.1 Je veux exécuter un code pour le suivi d'objets par ceci:Comment ajouter « Tracker » en python OpenCV 2.7

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) 

mais quand je le lance, je face avec cette erreur:

AttributeError: 'module' object has no attribute 'Tracker_create'

Voici le code source: http://www.learnopencv.com/object-tracking-using-opencv-cpp-python/ Je cherche des solutions, mais je ne peux pas trouver quelque chose d'utile ... que puis-je faire pour ajouter e est le module de ma bibliothèque opencv?

Répondre

1

Il semble que vous n'avez pas compilé votre OpenCV avec les modules opencv_contrib. Vous devez le recompiler. Vous pouvez trouver un très bon tutoriel étape-par-étape comment faire cela dans this blogpost.

EDIT:

Si vous avez besoin de le compiler sous Windows, vous pouvez utiliser this grand tutoriel par @Osama

Hope it helps.

+0

merci ... c'est génial ... mais j'en ai besoin dans Windows plutôt que Ubuntu savez-vous comment puis-je le faire dans Windows 8? – Elahe

+0

@Elahe J'ai ajouté un lien vers le tutoriel de stackoverflow qui décrit la compilation sous Windows. – kyjanond

1

Je pense que la méthode la plus simple et la plus rapide consiste à installer via les fichiers .whl. @foobar donne la réponse dans les liens post @kyjanond, mais vous pouvez obtenir les fichiers .whl à partir des liens suivants.

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

J'ai installé OpenCV 3.3.0 sur Python 2.7, donc je téléchargé:

  • opencv_python-3.3.0.10-CP27-cp27m-win32 .whl
  • opencv_contrib_python-3.3.0.10-CP27-cp27m-win32.whl

Pour installer, j'ai couru:

  • python -m pip installer opencv_python-3.3.0.10-CP27-cp27m-win32.whl
  • python -m pip installer opencv_contrib_python-3.3.0.10-CP27-cp27m- win32.whl

Cela a fonctionné, mais dans la version mise à jour d'OpenCV, la façon dont les fonctions de suivi sont appelées ont changé.

Le code d'origine dans le dépôt GitHub était:


tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN'] 

tracker_type = tracker_types[1] 

tracker = cv2.Tracker_create(tracker_type) 

j'ai changé à ce


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

Cette approac Il m'a semblé que ça marchait bien.

0

Les nouvelles versions d'openCV utilisent par exemple: la notation TrackerKCF_create().

Vous pouvez trouver de nouveaux exemples here

0

Une fois l'installation terminée. Tous les fichiers sont installés dans le dossier /usr/local/.
Mais pour l'utiliser, votre Python devrait être en mesure de trouver le module OpenCV.

Vous avez deux options pour cela.

  1. déplacer le module dans un dossier dans le python Path: chemin python peut être trouvé en entrant dans le terminal import sys;print sys.path python. Il imprimera de nombreux endroits. Déplacez /usr/local/lib/python2.7/site-packages/cv2.so vers n'importe lequel de ce dossier. Par exemple, su mv /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/ → packages de sites. Mais vous devrez le faire chaque fois que vous installez OpenCV.

  2. Ajouter /usr/local/lib/python2.7/site-packages au PYTHON_PATH: Il doit être effectué une seule fois. Ouvrez simplement ~/.bashrc et ajoutez la ligne suivante, puis déconnectez-vous et revenez. export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages. L'installation d'OpenCV est donc terminée. Ouvrez un terminal et essayez import cv2.

4

installer uniquement OpenCV-contrib-python

pip install opencv-contrib-python 

et cela fonctionnera!