在Mac OS上"import cv"时出现"Segmentation fault

6 投票
4 回答
6689 浏览
提问于 2025-04-16 13:19

我在我的Mac上尝试从源代码编译opencv。

我有以下的CMakeCache.txt文件: http://pastebin.com/KqPHjBx0

我输入了 ccmake ..,然后按 c,接着按 g

接着我输入 sudo make -j8http://pastebin.com/cJyr1cEd

然后我输入 sudo make installhttp://pastebin.com/W77syYBj

最后我在python中输入 import cv,结果出现了“Segmentation fault”,并且有这个错误追踪: http://pastebin.com/gegYAK1u

我不知道有什么信息可以帮助我,如果有需要,请问我,我会提供。

4 个回答

0

输入:

sudo port select --set python python27

这解决了我的段错误问题。

1

从你的日志来看,你似乎在使用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正常工作。

8

我遇到过类似的情况,下面是我解决的步骤。

在使用 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

撰写回答