导入opencv时出现Python3重新链接问题



问题:

在尝试从 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 编译结束后再次运行它。

相关内容

  • 没有找到相关文章

最新更新