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!
Devrait être réécrit comme ci-dessous:
(dist_transform, labels) = cv2.distanceTransform(opening,cv2.cv.CV_DIST_L2,5)
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.
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)
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
cv2.cv.CV_DIST_L2 fonctionne en remplacement