这是一个完全的新手问题;我已经下载了OpenCV 3.0.0 (https://github.com/Itseez/opencv/archive/3.0.0.zip)并为python 3.4编译了这个。(顺便说一句,我在OSX上)我正在使用PyCharm的库,并在图像上使用Sobel过滤器进行简单测试,似乎运行良好:
gradX = cv2.Sobel( myImage, ddepth = cv2.CV_32F, dx=1, dy=0, ksize=-1 )
然而,当我按照一些在线示例尝试应用拉普拉斯过滤器时,我发现拉普拉斯函数不是(我编译的)opencv的一部分。也就是说,这不会运行/compile:
laplacian = cv2.Laplacian( image, cv2.CV_32F)
似乎我也缺少其他定义(例如,找不到cv2.CV_64F),所以在某个地方,我一定是搞砸了。查看成堆的编译器输出,我找不到任何导致我掉下悬崖的地方。
使用print( dir(cv2) )
我可以看到Laplacian是模块的一部分,但不知为何我无法访问它,也就是说,python看不到它。我确实设置了PyCharm的DYLD_LIBRARY_PATH到所有opencv的。dylibs…有什么我遗漏的/需要检查的吗?
很抱歉这个模糊的问题,但我对这个动物相当着迷。
我建议使用wheel文件从pip安装。从这里下载wheel文件:
http://www.lfd.uci.edu/gohlke pythonlibs/# opencv
应该照顾你的依赖关系,并帮助你解决编译问题。
所以Windows不是问题:)
我怀疑你是对的。我没有Mac电脑,所以我没法复制。为了消除PyCharm是罪魁祸首,您可以启动终端并运行您的代码吗?我的意思是做下面的步骤(如果它在Mac上不起作用,请原谅我,但在Linux上我是这样检查的)。如果它运行,那么在您的PyCharm设置中有些东西不太正确。如果它不能在终端上工作,那么它可能是一个lib依赖问题。Linux终端:
/home/user/:~$ python3
>>import opencv as cv2
>>gradX = cv2.Sobel( myImage, ddepth = cv2.CV_32F, dx=1, dy=0, ksize=-1 )
>>laplacian = cv2.Laplacian( image, cv2.CV_32F)
可能需要对代码进行调整才能使其在Mac上工作。