【问题标题】:Import cv2 error, shared object dependencies not found导入cv2错误,找不到共享对象依赖
【发布时间】:2018-08-16 03:11:38
【问题描述】:

OpenCV 论坛告诉我我的问题与 Linux 相关,而不是 OpenCV,因此我在这里问。

我有import cv2 错误,请参阅下面的描述:

cv2.so 在路径下:

    /usr/local/lib/python2.7/dist-packages/cv2.so
    /usr/local/lib/python3.5/dist-packages/cv2.so

我不知道为什么我在每个python版本下都有cv2.so,我用python3构建opencv

我添加到~/.bashrc 文件中:

    export PYTHONPATH=/usr/local/lib/python3.5/dist-packages:$PYTHONPATH

但是,当我在python3运行时:

import cv2

它给了我这个信息:

Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: libopencv_hdf.so.3.4: cannot open shared object file: No such file or directory

我该如何解决这个问题?谢谢。

环境:

Ubuntu 16.04
OpenCV 3.4.0 build with `contrib`, `python3`, `python3-numpy`.

构建OpenCV3.4.0时的代码

PS:我已经安装了两次 OpenCV3。如果您需要我的第一次 CMake 命令,请关注link

我使用ldd检查共享依赖发现了一个问题:

    ldd /usr/local/lib/python3.5/dist-packages/cv2.so

    linux-vdso.so.1 =>  (0x00007fffacda1000)
    libopencv_hdf.so.3.4 => not found
    libopencv_reg.so.3.4 => not found
    libopencv_surface_matching.so.3.4 => not found
    libopencv_xphoto.so.3.4 => not found
    libopencv_freetype.so.3.4 => not found
    libopencv_fuzzy.so.3.4 => not found
    libopencv_img_hash.so.3.4 => not found
    libopencv_bioinspired.so.3.4 => not found
    libopencv_saliency.so.3.4 => not found
    libopencv_ccalib.so.3.4 => not found
    libopencv_rgbd.so.3.4 => not found
    libopencv_structured_light.so.3.4 => not found
    libopencv_aruco.so.3.4 => not found
    libopencv_bgsegm.so.3.4 => not found
    libopencv_face.so.3.4 => not found
    libopencv_optflow.so.3.4 => not found
    libopencv_stitching.so.3.4 => not found
    libopencv_objdetect.so.3.4 => not found
    libopencv_photo.so.3.4 => not found
    libopencv_tracking.so.3.4 => not found
    libopencv_plot.so.3.4 => not found
    libopencv_text.so.3.4 => not found
    libopencv_dnn.so.3.4 => not found
    libopencv_ximgproc.so.3.4 => not found
    libopencv_xfeatures2d.so.3.4 => not found
    libopencv_ml.so.3.4 => not found
    libopencv_shape.so.3.4 => not found
    libopencv_video.so.3.4 => not found
    libopencv_calib3d.so.3.4 => not found
    libopencv_features2d.so.3.4 => not found
    libopencv_flann.so.3.4 => not found
    libopencv_highgui.so.3.4 => not found
    libopencv_videoio.so.3.4 => not found
    libopencv_imgcodecs.so.3.4 => not found
    libopencv_imgproc.so.3.4 => not found
    libopencv_core.so.3.4 => not found
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff9d06b2000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff9d03a9000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff9d0193000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff9cfdc9000)
    /lib64/ld-linux-x86-64.so.2 (0x00007ff9d10cd000)

谁能给出非常详细的说明来解决这个问题?

更新:

将 ...gitclone.../opencv/build/lib 添加到 $LD_LIBRARY_PATH,并导入 cv2,它给出了这个:

Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: /usr/local/lib/python3.5/dist-packages/cv2.so: undefined symbol: _ZTIN2cv3dnn19experimental_dnn_v35LayerE

【问题讨论】:

  • 问题是我第二次安装OpenCV的时候,其实是安装了opencv2,而不是opencv3。解决方法:检查是否安装了所有依赖,重新安装OpenCV3。

标签: ubuntu-16.04 opencv3.0 ldd


【解决方案1】:

问题是您的 OpenCV 库没有链接到正确的位置。 您可以尝试这样做:

ldconfig -v

如果这没有帮助,您需要完全按照说明重新安装 OpenCV。

【讨论】:

    猜你喜欢
    • 2022-10-19
    • 2017-04-08
    • 2017-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    相关资源
    最近更新 更多