在Mac OS上"import cv"时出现"Segmentation fault
我在我的Mac上尝试从源代码编译opencv。
我有以下的CMakeCache.txt文件: http://pastebin.com/KqPHjBx0
我输入了 ccmake ..
,然后按 c
,接着按 g
。
接着我输入 sudo make -j8
:
http://pastebin.com/cJyr1cEd
然后我输入 sudo make install
:
http://pastebin.com/W77syYBj
最后我在python中输入 import cv
,结果出现了“Segmentation fault”,并且有这个错误追踪:
http://pastebin.com/gegYAK1u
我不知道有什么信息可以帮助我,如果有需要,请问我,我会提供。
4 个回答
输入:
sudo port select --set python python27
这解决了我的段错误问题。
从你的日志来看,你似乎在使用MacPorts和python 2.6。
opencv
在这个框架下可以顺利编译:
sudo port install opencv +python26
确保你安装了py26-numpy
,这样才能支持一些基本功能,比如cv.fromarray
:
sudo port install py26-numpy
这意味着你的问题已经被MacPorts社区解决了。你遇到的问题是最新的源代码吗?你编译的版本是MacPorts使用的那个(opencv 2.2.0)。
你的问题是关于从源代码编译的。查看链接到的portfile,你就能找到你的问题所在。要找到Portfile,可以这样做:
port file opencv
或者直接这样:
sudo port edit opencv
这将列出所有必要的配置标志,以确保openCV正常工作。
我遇到过类似的情况,下面是我解决的步骤。
在使用 ccmake 的时候(输入 ccmake -G "Unix Makefiles" .
),按 t
键切换到高级模式。
把 PYTHON_LIBRARY
的值改成 /opt/local/lib/libpython2.6.dylib
,然后把 PYTHON_INCLUDE_DIR
改成 /opt/local/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6
。
需要注意的是,具体的路径是根据你使用的 Python 版本来决定的,比如 2.6 或 2.7 等等。如果你使用的是系统自带的 Python,而不是 MacPorts(它在 /opt 目录下),那么你可能需要把 PYTHON_LIBRARY 设置为 /usr/lib/libpython2.6.dylib。