Ответ 1
Следует переписать, как показано ниже:
(dist_transform, labels) = cv2.distanceTransform(opening,cv2.cv.CV_DIST_L2,5)
Я пытаюсь использовать метод cv2.distanceTransform()
в Python. И я получаю сообщение об ошибке при запуске следующей строки кода:
dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)
При запуске этого кода появляется следующая ошибка:
AttributeError: объект 'module' не имеет атрибута 'DIST_L2'
Схожие вопросы были заданы раньше, и я знаю, что эта проблема возникает, когда вы импортируете "что-то", когда ваше имя файла python "something.py". Однако мое имя файла python - segment3.py.
Может ли кто-нибудь помочь мне в этом? Я пытаюсь сделать сегментацию с использованием алгоритма водораздела. Я работаю над Fedora20. Спасибо заранее!
Следует переписать, как показано ниже:
(dist_transform, labels) = cv2.distanceTransform(opening,cv2.cv.CV_DIST_L2,5)
Вместо cv2.DIST_L2
используйте:
cv2.cv.CV_DIST_L2
У меня была та же проблема, но после некоторых исследований в документации упоминался пример файла исходного кода (opencv_source/samples/python2/distrans.py), который использует эту константу. Я тестировал здесь, и он работал, как ожидалось.
Это поздний ответ, но для того, чтобы пройти через учебник, который вы делаете, вам действительно нужно установить openCV 3.0. Тогда синтаксис в учебнике верен.
Для openCV 3.0:
dist_transform = cv2.distanceTransform(opening, cv2.DIST_L2, 5)
Для openCV 2.x:
dist_transform = cv2.distanceTransform(opening, cv2.cv.CV_DIST_L2, 5)
Следующая ошибка, с которой вы столкнетесь в завершении учебника, cv2.connectedComponents
недоступна. См. OpenCV для Python - объект AttributeError: 'module' не имеет атрибута 'connectedComponents'.
Фокус в том, чтобы установить opencv3, что легко можно сделать с помощью Anaconda с помощью
conda install -c https://conda.binstar.org/menpo opencv3
cv2.cv.CV_DIST_L2 работает как замена