web-dev-qa-db-fra.com

Python AttributeError: l'objet 'module' n'a pas d'attribut 'DIST_L2'

J'essaie d'utiliser la méthode cv2.distanceTransform() en Python. Et je reçois une erreur en exécutant la ligne de code suivante:

dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)

Je reçois le message d'erreur suivant lors de l'exécution de ce code:

AttributeError: l'objet 'module' n'a pas d'attribut 'DIST_L2'

Des questions similaires ont déjà été posées, et je sais que ce problème se produit lorsque vous importez «quelque chose» lorsque votre nom de fichier python est «quelque chose.py». Toutefois, mon nom de fichier python est segment3.py.

Quelqu'un peut-il m'aider s'il vous plaît avec cela? J'essaie de faire la segmentation en utilisant l'algorithme de gestion des bassins versants. Je travaille sur Fedora 20. Merci d'avance!

13
Vartika

Devrait être réécrit comme ci-dessous:

(dist_transform, labels) = cv2.distanceTransform(opening,cv2.cv.CV_DIST_L2,5) 
24
derjohng

Au lieu de cv2.DIST_L2, utilisez:

cv2.cv.CV_DIST_L2

J'avais le même problème, mais après quelques recherches, le documentation mentionne un exemple de fichier sur le code source (opencv_source/samples/python2/distrans.py) qui utilise cette constante à la place. J'ai testé ici et cela a fonctionné comme prévu.

15
andreterron

C'est une réponse tardive, mais pour pouvoir suivre le tutoriel que vous suivez, vous devez vraiment installer openCV 3.0. Ensuite, la syntaxe dans le tutoriel est correcte.

Pour openCV 3.0:

dist_transform = cv2.distanceTransform(opening, cv2.DIST_L2, 5)

Pour openCV 2.x:

dist_transform = cv2.distanceTransform(opening, cv2.cv.CV_DIST_L2, 5)
11
lynvie

Le prochain bogue que vous rencontrerez en terminant le tutoriel est que cv2.connectedComponents n'est pas disponible. Voir OpenCV pour Python - AttributeError: l'objet 'module' n'a pas d'attribut 'connectedComponents' .

L'astuce consiste à installer opencv3, ce qui peut facilement être fait avec Anaconda using

conda install -c https://conda.binstar.org/menpo opencv3
3
Bob Baxley

cv2.cv.CV_DIST_L2 fonctionne en remplacement

0
Rutuja Jadhav