Python AttributeError:'module'对象没有属性'DIST_L2'

Var*_*ika 14 python opencv image-processing image-segmentation

我想cv2.distanceTransform()在Python中使用方法.运行以下代码行时出现错误:

dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5)
Run Code Online (Sandbox Code Playgroud)

运行此代码时出现以下错误:

AttributeError:'module'对象没有属性'DIST_L2'

之前已经提出了类似的问题,我知道当你的python文件名是'something.py'时导入'某事'会出现这个问题.但是,我的python文件名是segment3.py.

有人可以帮我这个吗?我正在尝试使用分水岭算法进行分割.我正在研究Fedora20.提前致谢!

der*_*hng 24

应改写如下:

(dist_transform, labels) = cv2.distanceTransform(opening,cv2.cv.CV_DIST_L2,5) 
Run Code Online (Sandbox Code Playgroud)

  • 我只有一个ret值,所以我不得不写dist_ransform = cv2.distanceTransform(opening2,cv2.cv.CV_DIST_L2,5) (2认同)

小智 16

而不是cv2.DIST_L2,使用:

cv2.cv.CV_DIST_L2
Run Code Online (Sandbox Code Playgroud)

我遇到了同样的问题,但经过一些研究,文档中提到了源代码(opencv_source/samples/python2/distrans.py)上的一个示例文件,它使用了这个常量.我在这里测试过,它按预期工作.


lyn*_*vie 11

这是一个迟到的回复,但为了完成你正在做的教程,你真的需要安装openCV 3.0.然后教程中的语法是正确的.

对于openCV 3.0:

dist_transform = cv2.distanceTransform(opening, cv2.DIST_L2, 5)
Run Code Online (Sandbox Code Playgroud)

对于openCV 2.x:

dist_transform = cv2.distanceTransform(opening, cv2.cv.CV_DIST_L2, 5)
Run Code Online (Sandbox Code Playgroud)