Python "Segmentation fault: 11" 当 运行 "import cv" 或 "import cv2"

Python "Segmentation fault: 11" when running "import cv" or "import cv2"

我已经按照 these instructions, 使用 macports 安装了 numpy 和 opencv,但是当我尝试 import cvimport cv2 时,我只是遇到段错误,我不知道为什么。

有什么建议吗?


$ python
Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv
Segmentation fault: 11

$ python
Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Segmentation fault: 11

抱歉,细节太少了,但这是一台新电脑,我为此安装了 macports,这是我安装 macports 的唯一东西,所以我不知道为什么这不是'没有工作。


编辑:现在我更困惑了。

查看崩溃报告我发现了这个:

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000

所以,作为一个盲人,我 运行 python 作为超级用户:

$ sudo python
Python 2.7.9 (default, Dec 13 2014, 15:13:49) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv
>>>

作为超级用户,一切似乎 运行 都很好。这怎么可能?

如果您仔细查看 python 命令的信息消息,您会发现不同之处。

来自越野车:

$ python
Python 2.7.6 (default, Sep  9 2014, 15:04:36) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.39)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
Segmentation fault: 11

来自工作中的:

$ sudo python
Python 2.7.9 (default, Dec 13 2014, 15:13:49) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv
>>>

您的计算机上有两个不同版本的 Python,这可能解释了您的行为。

在 OSX 10.11 上遇到这个问题并在各种情况下浏览了几个这个问题的案例后,我意识到这个问题的发生主要是由于以下独立原因:

  1. 冲突的 python 版本(超过一个 python);解决方案 - 卸载其中之一,获取与 opencv 兼容的那个 ("Segmentation fault" during "import cv" on Mac OS)
  2. opencv版本问题;解决方案 - 获取适合您的版本 Python opencv feature detector causes segmentation fault
  3. 你的 numpy 版本有问题;解决方案 - 卸载并重新安装 numpy (OpenCV - cannot find module cv2)

我尝试了所有 3 个,但第 3 个解决了我的问题。

使用

cv2.ocl.setUseOpenCL(False)

在代码开头为我解决了问题。

我遇到了类似的问题。

➜  ~ ✗ python
Python 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016, 13:19:00)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
[1]    41233 segmentation fault  python

但如果我先导入 numpy,问题就会消失。

➜  ~ ✗ python
Python 3.6.0 |Continuum Analytics, Inc.| (default, Dec 23 2016, 13:19:00)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import cv2
>>>

对我来说,解决方案很简单

sudo apt install python3-opencv

然后安装pip opencv包

sudo pip3 install opencv-python 

sudo pip install opencv-python 

注意:这是因为我启动了一个新的 Aws 实例。