Open CV SIFT 创建分段错误 - 以代码 139 退出

问题描述

我在 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 版本位于您之前的操作系统上。当您使用以前操作系统的二进制文件并尝试将其与当前操作系统一起使用时,存在一些不兼容问题。解决方案是卸载并重新安装软件包,以便它在您的系统上正确构建。不过,这将要求您升级到最新版本的 OpenCV,因此您将无法再使用 3.4.2。

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