导入opencv时出现Python3重新链接问题
Posted
技术标签:
【中文标题】导入opencv时出现Python3重新链接问题【英文标题】:Python3 Relink issue while importing opencv 【发布时间】:2020-01-24 10:08:55 【问题描述】:问题:
尝试在 Ubuntu 18.04 上从 github 导入最新可用的 OpenCV 的新编译版本后出现分段错误。
这是我在尝试将cv2
导入Python 3 时收到的错误消息:
$ 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)
我的 Ubuntu; 5.0.0-29-generic x86_64 GNU/Linux
从我克隆 OpenCV 的地方; https://github.com/opencv/opencv
相关话题;getting error while importing cv2 module in ubuntu amazon instanceConfigure AWS Redshift on Ubuntu 18.04 and use it with pyodbchttps://unix.stackexchange.com/questions/444697/cannot-run-python-file-asks-to-relink-librarieshttps://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 detectors 和 descriptors 当 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'
【问题讨论】:
哟..你有没有解决这个问题..我也有一个更棘手的问题。认为它与 GPU 驱动程序或配置有关。我不知道如何解决 我暂时没有修复它。如果我找到任何改进的方法,我会更新主帖。 如果您已经找到解决方案就好了。 【参考方案1】:这似乎是由版本依赖问题引起的。
我遇到了同样的问题,运行以下命令
apt install python3-opencv
这样就可以解决问题了。
【讨论】:
我必须从源代码编译 opencv 才能使用 SIFT 和 SURF 关键点和描述符(+许多其他)运行测试,当 opencv 与 apt 一起安装时不再可用:请参阅 ***.com/questions/37039224/… 和***.com/questions/52305578/… 它没有解决我的问题,s.k. 发布的链接也没有。至于我的问题,它与user:~/$ jupyter qtconsole /home/linuxbrew/.linuxbrew/opt/python@3.8/bin/python3.8: Relink
/usr/lib/x86_64-linux-gnu/libQtCore.so.4' 和/lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol
clock_gettime' 分段错误(核心转储)有关`【参考方案2】:
在我的情况下,通过安装 OpenCV 标头 sudo apt install libopencv-dev
解决了该错误。通常我在尝试 pip
安装 OpenCV Python 绑定之前执行此 apt
安装
【讨论】:
它没有解决问题,因为我正在从源代码构建 opencv。 它也没有解决我的问题。至于我的问题,它与user:~/$ jupyter qtconsole /home/linuxbrew/.linuxbrew/opt/python@3.8/bin/python3.8: Relink
/usr/lib/x86_64-linux-gnu/libQtCore.so.4' 和/lib/x86_64-linux-gnu/librt.so.1' for IFUNC symbol
clock_gettime' 分段错误(核心转储)有关`【参考方案3】:
就我而言
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报错的问题。
【讨论】:
也解决了我的问题。 python3.8 报告缺少 libnccl2 包。【参考方案4】:我遇到了同样的问题。在我的情况下,问题与 CuDNN 有关。
Cuda: 10.2
CuDNN: tried both versions 7.6.5 and 8.0.1
当我从 github没有启用 CuDNN 编译 OpenCV 4.4.0 时,错误消失了。 换句话说,不要在编译 OpenCV 时包含这些 cmake 标志:
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
如果您需要 CuDNN 支持,问题可能是安装后 CuDNN 未正确链接。 确保在安装 CuDNN 后运行以下命令
sudo ldconfig
OpenCV 编译结束后再次运行。
【讨论】:
以上是关于导入opencv时出现Python3重新链接问题的主要内容,如果未能解决你的问题,请参考以下文章
在 Jetson Nano 上安装 OpenCV 4.1.2 时出现问题。导入 cv2,没有名为“cv2”的模块
使用 imshow + waitKey 显示图像 opencv+python 时出现问题
尝试导入 pybind opencv 模块时出现 libgtk 错误
在 Jupyter 笔记本上导入 openCV 时出现问题,即使它安装在我的机器上