Je travaille avec python 2.7 et opencv 3.1 Je veux exécuter un code pour le suivi des objets par ceci:
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)
mais quand je le lance, je fais face à 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 trouve rien qui soit utile… Que puis-je faire pour ajouter ce module à ma bibliothèque open source?
Il suffit d'installer opencv-contrib-python
pip install opencv-contrib-python
et ça va marcher!
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, j'ai donc téléchargé:
Pour installer, j'ai couru:
Cela a fonctionné, mais dans la version mise à jour d'OpenCV, la façon dont les fonctions de suivi sont appelées a changé.
Le code original dans le référentiel GitHub était:
tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN']
tracker_type = tracker_types[1]
tracker = cv2.Tracker_create(tracker_type)
J'ai changé cela en
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 approche a semblé bien fonctionner pour moi.
Une fois l'installation terminée. Tous les fichiers sont installés dans le dossier /usr/local/
.
Mais pour l'utiliser, votre Python devrait pouvoir trouver le module OpenCV
.
Vous avez deux options pour cela.
Déplacez le module dans n’importe quel dossier du chemin Python: le chemin Python peut être trouvé en entrant import sys;print sys.path
dans le terminal Python. Il imprimera de nombreux endroits. Déplacez /usr/local/lib/python2.7/site-packages/cv2.so
dans l'un de ces dossiers. Par exemple, su mv /usr/local/lib/python2.7/site-packages/cv2.so /usr/lib/python2.7/
→ site-packages. Mais vous devrez le faire chaque fois que vous installez OpenCV
.
Ajoutez /usr/local/lib/python2.7/site-packages
au PYTHON_PATH
: cela ne doit être fait qu'une fois. Ouvrez simplement ~/.bashrc
et ajoutez-y la ligne suivante, puis déconnectez-vous et revenez. export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages
. Ainsi, l'installation d'OpenCV est terminée. Ouvrez un terminal et essayez Import cv2.
Il semblerait que vous n’ayez pas compilé votre OpenCV avec les modules opencv_contrib. Vous devez le recompiler. Vous pouvez trouver un très bon tutoriel étape par étape pour savoir comment le faire dans this blogpost.
MODIFIER:
Si vous avez besoin de le compiler sous Windows, vous pouvez utiliser this excellent tutoriel de @Osama
J'espère que ça aide.
Les nouvelles versions d’openCV utilisent par exemple la notation TrackerKCF_create ().
Vous pouvez trouver de nouveaux exemples ici