web-dev-qa-db-fra.com

AttributeError: l'objet 'module' n'a pas d'attribut 'xfeatures2d' [Python/OpenCV 2.4]

Cette ligne:

sift = cv2.xfeatures2d.SIFT_create()

erreur de retour:

Traceback (most recent call last):
  File "C:/Python27/openCVskrypty/GUI/SOLUTION2.py", line 11, in <module>
    sift = cv2.xfeatures2d.SIFT_create()
AttributeError: 'module' object has no attribute 'xfeatures2d'

J'ai lu quelque chose à propos de cette erreur et cela apparaît dans OpenCV version 3.0. C'est assez étrange parce que j'ai la version 2.4.11. 

Je vérifie dir (cv2) et je n'ai pas le module xfeatures2d. Quelqu'un sait-il pourquoi? Puis-je le télécharger séparément? 

Merci pour l'aide comment résoudre ce problème.

7
Lipstick

Je pense que vous devriez plutôt installer opencv-contrib-python. Le module que vous utilisez n'est pas supporté par opencv-python. Voir opencv-contrib-python

À installer:

pip install opencv-contrib-python
13
ShaoKui

SIFT est un algorithme breveté, donc non disponible dans chaque version open-cv. Ce que vous pouvez faire, c’est installer opencv et sa partie contrib en même temps, c’est-à-dire

pip install opencv-python==3.3.0.10 opencv-contrib-python==3.3.0.10

SIFT a bien fonctionné pour moi sur les versions ci-dessus de opencv.

9
Shankul Shukla

Le problème vient de votre version d'OpenCV. Vous dites que vous êtes sur la version 2.4.11 mais cette version d'OpenCV ne dispose pas de cette méthode.

Vous pouvez vérifier la documentation . Il a features2d

Considérant que OpenCV 3.0 fait.

2
Pythonista

Vous pouvez utiliser ceci à la place:

sift=cv2.SIFT()
0
user3094631

Cette erreur peut également se produire dans OpenCV 3+ car elle est due à des versions incompatibles des packages OpenCV et OpenCV-Contrib.

J'avais OpenCV version 3.4.1 et OpenCV-Contrib version 3.4.0. J'ai essayé ce qui suit avec OpenCV-Contrib:

Désinstallez le paquet OpenCV-Contrib:

$ pip uninstall opencv-contrib-python

Puis installez le même à nouveau:

$ pip install opencv-contrib-python

Le pip récupère et installe automatiquement la dernière version compatible.

0
srihegde

J'avais un problème similaire à celui que @srihegde a déclaré: vous pouvez essayer de désinstaller opencv-contrib-python package et de réinstaller. Vous pouvez également essayer de désinstaller opencv-python package si vous en avez un, car cela pourrait gâcher les packages. 

Cela m'a aidé.

Désinstaller:

pip3 uninstall opencv-contrib-python
pip3 uninstall opencv-python

Et puis installez:

pip3 install opencv-contrib-python
pip3 install opencv-python
0
Modestas Jurčius