【问题标题】:"Segmentation fault" during "import cv" on Mac OSMac OS 上“导入 cv”期间的“分段错误”
【发布时间】:2011-07-11 15:58:39
【问题描述】:

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

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

我创建ccmake ..,按c,然后按g。 比我做的sudo make -j8http://pastebin.com/cJyr1cEd

比我做的sudo make install: http://pastebin.com/W77syYBj

然后我在 python 中创建import cv 并使用此堆栈跟踪得到“分段错误”: http://pastebin.com/gegYAK1u

我不知道有什么可以帮助我,请。问问,我会的。

【问题讨论】:

  • 嘿,你是如何创建堆栈跟踪的?

标签: python macos opencv macports


【解决方案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 所需的所有配置标志。

【讨论】:

  • 我已经尝试了不同的变体,其中许多都以不同的结果失败了。我现在的系统很乱。 ---- 我已经安装了 python_select。它有 python26 的 2 个变体:python26-apple 和 python26。如果 -apple one 选择了我在这篇文章中描述的情况。 --- 选择了第二个我有这个pastebin.com/ve7wjFy5。 --- 以下是 python26 具有的导入路径:pastebin.com/1kggWJZB Python26-apple 具有:pastebin.com/eDmXfpgg
  • 以防万一 - 这里我在 /opt/ 下提到了 opencv:pastebin.com/Qij5kuFt --- 这是我已经拥有 cv.so 的地方:pastebin.com/Di8MvSJj
【解决方案2】:

我有同样的情况并解决了以下步骤。

在 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强>

【讨论】:

  • 这似乎为我解决了这个问题,即使 'make install' 出错了。去图吧。
  • 我有同样的错误,但无法理解这个答案。但是输入 sudo port select --set python python27 为我修复了段错误。
  • 就我而言,我没有 MacPorts Python,而是 python.org Python。我只是重写了/usr/lib/libpython2.7.dylib 的符号链接以指向/Library/Frameworks/Python.framework/Versions/2.7/Python 而不是/System/Library/Frameworks/Python.framework/Versions/2.7/Python
【解决方案3】:

打字:

sudo port select --set python python27

为我修复了段错误。

【讨论】:

    【解决方案4】:

    问题很简单,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
    

    “错误”是 python2.7 解释器试图打开 python2.6 预编译的二进制文件,导致 seg 错误 11(反之亦然)

    opencv 最大的问题是它没有源代码,只有二进制文件,这些二进制文件严重依赖于构建于哪个编译器(哪个平台等)

    【讨论】:

      猜你喜欢
      • 2017-07-30
      • 1970-01-01
      • 1970-01-01
      • 2021-01-04
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 2017-02-28
      • 1970-01-01
      相关资源
      最近更新 更多