Mac OS上“导入cv”期间的“分段错误”

时间:2011-03-09 06:39:45

标签: python macos opencv macports

尝试从源代码在我的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并使用此stacktrace获取“Segmentation faul”: http://pastebin.com/gegYAK1u

我不知道对我有什么帮助,请帮忙。问,我会明白的。

4 个答案:

答案 0 :(得分: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

答案 1 :(得分: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,执行:

port file opencv

或直接

sudo port edit  opencv

这将列出工作openCV所需的所有配置标志。

答案 2 :(得分:0)

打字:

sudo port select --set python python27

为我修复了段错误。

答案 3 :(得分:0)

问题很简单,macports在〜/ usr / lib

中重写了cv.so

如果您使用

安装了OPENCV
sudo port install  opencv +python26

sudo port select --set python python26

如果您使用

安装了OPENCV
sudo port install  opencv +python27

sudo port select --set python python27

“bug”是python2.7解释器试图打开python2.6预编译的二进制文件,它给出了seg fault 11(反之亦然)

opencv的问题在于它没有源代码,只是依赖于构建在哪个编译器上的二进制文件(哪个平台等)。