Python属性错误:'module'对象没有属性'DIST_L2'。

14

我想在Python中使用cv2.distanceTransform()方法。但是当我运行以下代码时,出现了一个错误:

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

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

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

类似的问题以前已经有人问过了,我知道当您导入'something'时,如果您的Python文件名是'something.py',则会发生此问题。 但是,我的Python文件名为segment3.py。

请问有谁可以帮助我吗?我正在尝试使用分水岭算法进行图像分割。 我正在使用Fedora20操作系统。 谢谢!


谷歌没有找到名为DIST_LT2的东西。你确定你要找的东西存在并且叫这个名字吗? - user2357112
2
我对OpenCV不是很熟悉,但你确定你不是想用cv2.DIST_L2而不是cv2.DIST_LT2吗? - mgilson
非常抱歉。是的,它是cv2.DIST_L2,但错误仍然相同,只是打字错误。 - Vartika Sharma
5个回答

24

应该重写如下:

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

2
我只得到了一个返回值,因此我不得不编写以下代码: dist_ransform = cv2.distanceTransform(opening2, cv2.cv.CV_DIST_L2, 5) - N4ppeL

15

使用以下替代cv2.DIST_L2

cv2.cv.CV_DIST_L2
我遇到了同样的问题,但经过一些研究,文档提到源代码(opencv_source/samples/python2/distrans.py)中有一个示例文件使用了这个常量。我在这里进行了测试,结果如预期一样。

它仍然无法工作。但是为什么会出现这个问题呢?DIST_L2在OpenCV中存在。 - Vartika Sharma
@Vartika 你是否遇到了相同的错误?还是生成的图像与预期不同? - andreterron
不是同一个错误,但我没有得到图像。 错误是 - 文件“vpython/segment3.py”,第32行,在<module>中 dist_transform = cv2.distanceTransform(opening,cv2.cv.CV_DIST_L2,5) cv2.error: /builddir/build/BUILD/opencv-2.4.7/modules/imgproc/src/distransform.cpp:723: 错误:(-210)源图像必须为8uC1,距离图必须为32fC1(或在简单的L1距离变换的情况下为8uC1)在函数cvDistTransform中 - Vartika Sharma
1
顺便提一下,distanceTransform将返回'tuple',而不仅仅是'dist_transform'。 例如, (dist_transform, labels) = cv2.distanceTransform(opening,cv2.cv.CV_DIST_L2,5) - derjohng

11

虽然回复有些晚,但为了完成你正在进行的教程,你确实需要安装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)

3

0

cv2.cv.CV_DIST_L2 可以作为替代方案


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接