问题:
在尝试从 Ubuntu 18.04 上的 github 导入最新可用 OpenCV 的新编译版本后,我遇到了分段错误。
这是我尝试在Python 3中导入cv2
时收到的错误消息:
$ python3
Python 3.6.8 (default, Aug 20 2019, 17:12:48)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
python3: Relink `/lib/x86_64-linux-gnu/libsystemd.so.0' with `/lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol `clock_gettime'
python3: Relink `/lib/x86_64-linux-gnu/libudev.so.1' with `/lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol `clock_gettime'
Segmentation fault (core dumped)
我的乌班图;5.0.0-29-generic x86_64 GNU/Linux
我从那里克隆了OpenCV; https://github.com/opencv/opencv
相关线程;
在 ubuntu Amazon 实例中导入 cv2 模块时出错
在 Ubuntu 18.04 上配置 AWS Redshift 并将其与 pyodbc
https://unix.stackexchange.com/questions/444697/cannot-run-python-file-asks-to-relink-libraries
https://github.com/tensorflow/tensorflow/issues/19375 一起使用
所提供的解决方案都不起作用,因为我的笔记本电脑上没有任何 NVidia 图形芯片;
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 5500 (rev 09)
注意:
我需要从源代码编译 OpenCV,因为我想使用 SIFT 和 SURF 检测器和描述符,当 OpenCV 与apt
一起安装时,它们不再可用:
>>> import cv2
>>> cv2.__version__
'4.2.0'
>>> cv2.xfeatures2d.SIFT_create()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cv2.error: OpenCV(4.2.0)
/io/opencv_contrib/modules/xfeatures2d/src/sift.cpp:1210:
error: (-213:The function/feature is not implemented)
This algorithm is patented and is excluded in this configuration;
Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in
function 'create'
这似乎是由版本依赖关系问题引起的。 我遇到了同样的问题,运行以下命令apt install python3-opencv
这将解决问题。
就我而言,该错误是通过安装 OpenCV 标头来解决的sudo apt install libopencv-dev
.通常,我在尝试pip
安装 OpenCV Python 绑定之前apt
安装执行此操作。
就我而言
python3.6: Relink `/lib/x86_64-linux-gnu/libsystemd.so.0' with `/lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol `clock_gettime'
python3.6: Relink `/lib/x86_64-linux-gnu/libudev.so.1' with `/lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol `clock_gettime'
由
$ python3.6
import tvm
并通过安装缺少的库来解决。我发现通过使用不同版本的 python 缺少这一点,正如其他地方所建议的那样。特别是我发现
$ python3.7
import tvm
(准确(报告丢失的库。一旦为 python3.6 安装了缺少的库
$ python3.6 -m pip install <missing_library>
问题消失了。
因此,这个问题并非特定于OpenCV或CuDNN。这似乎是python3.6中的错误报告中的一个问题。
我遇到了同样的问题。在我的情况下,问题与 CuDNN 有关。
Cuda: 10.2
CuDNN: tried both versions 7.6.5 and 8.0.1
当我在未启用 CuDNN 的情况下从 github 编译 OpenCV 4.4.0 时,错误消失了。 换句话说,在编译OpenCV时不要包含这些cmake标志:
-D WITH_CUDNN=ON
-D OPENCV_DNN_CUDA=ON
如果您需要 CuDNN 支持,问题可能是安装后 CuDNN 未正确链接。 确保在安装 CuDNN 后运行以下命令
sudo ldconfig
在 OpenCV 编译结束后再次运行它。