【问题标题】:Open CV SIFT creates segmentation fault - exits with code 139Opencv SIFT 创建分段错误 - 以代码 139 退出
【发布时间】:2021-04-16 03:58:29
【问题描述】:

我在 MacOS X 上运行 python 3.6.10。我曾经能够毫无问题地运行 openCV 的 SIFT,但现在我遇到了分段错误。我用示例数据重新创建了下面的问题。有人熟悉这个错误吗?

import cv2
from skimage import data

cv2.__version__
Out[8]: '3.4.2'

image = data.astronaut()
sift = cv2.xfeatures2d.SIFT_create()
kp1, des1 = sift.detectAndCompute(image, None)
Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)

【问题讨论】:

  • 你更新到 Big Sur 了吗?目前 OpenCV + Big Sur 存在一些问题。目前在 Catalina 上是稳定的,但是一旦你去 Big Sur,在使用 OpenCV 时会出现意想不到的问题。 FWIW,这段代码在 Catalina 上运行得很好。
  • 是的,我两天前更新到 Big Sur。

标签: python opencv sift


【解决方案1】:

这是由于升级到 Big Sur,之前构建的 OpenCV 版本位于您之前的操作系统上。当您使用以前操作系统的二进制文件并尝试将其与当前操作系统一起使用时,会出现一些不兼容性。解决方案是卸载并重新安装软件包,以便它在您的系统上正确构建。不过,这将要求您升级到最新版本的 OpenCV,因此您将无法再使用 3.4.2。

在您的终端中,根据您安装的风格执行pip uninstall opencv-pythonpip uninstall opencv-contrib-python,然后通过pip install opencv-pythonpip install opencv-contrib-python 重新安装。

【讨论】:

  • 谢谢@rayryeng..不幸的是我卸载并安装了,但编译仍然有问题。 (顺便说一句,我认为我可以安装特定版本,例如 pip install opencv-contrib-python==3.4.2.16,以获得该 SIFT 算法)。我无法将opencv导入python代码而不会出错。基于以下内容,它仍在尝试为 Mac OSX 10 编译:'pip install opencv-contrib-python Collecting opencv-contrib-python Downloading opencv_contrib_python-4.5.1.48-cp36-cp36m-macosx_10_13_x86_64.whl (51.3 MB)'
  • 我不确定我是否遵循您的错误。自专利到期以来,OpenCV 4 在 contrib 之外提供了 SIFT。但是,如果您安装 contrib 版本,它应该仍然可用。当您使用 pip 时,它不会继续通过下载步骤吗?
  • 嗨。抱歉,是的,它下载了,但是当我尝试将它导入 python 时仍然给我带来了麻烦。按照您的建议,我现在刚刚启动了一个新的 conda 环境并重新安装了我的软件包。现在一切正常。我导入了早期版本的 open cv。这将运行 SIFT。
  • 正如我所提到的,您不必使用早期版本的 OpenCV。 SIFT的专利已经过期,您再也不用担心访问问题了。很高兴你设法修复它。
猜你喜欢
  • 1970-01-01
  • 2017-01-20
  • 2016-09-13
  • 2019-08-11
  • 2018-12-12
  • 2012-12-16
  • 1970-01-01
  • 2017-11-03
  • 2021-03-07
相关资源
最近更新 更多