由于OSError无法在anaconda环境上运行python复制:libopencv_gapi.so.4.1

问题描述

我正在尝试在conda 3.7.6环境中构建python应用程序,但是由于libopencv_gapi.so.4.1而失败。

python darknet_server.py 
Traceback (most recent call last):
  File "darknet_server.py",line 342,in <module>
    main()
  File "darknet_server.py",line 328,in main
    datafilepath=datafilepath.encode(),File "/home/vfbsilva/Source/darknet_alexey/darknet/pythons/darknet.py",line 120,in __init__
    self.lib = CDLL(self.libfilepath,RTLD_GLOBAL)
  File "/home/vfbsilva/Programas/anaconda3/envs/darknet376/lib/python3.7/ctypes/__init__.py",line 364,in __init__
    self._handle = _dlopen(self._name,mode)
OSError: libopencv_gapi.so.4.1: cannot open shared object file: No such file or directory

试图参加@ rafael-junio-xavier建议,但没有成功:

ldconfig -p | grep opencv
        libopencv_xphoto.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_xphoto.so.4.4
        libopencv_xphoto.so (libc6,x86-64) => /usr/lib/libopencv_xphoto.so
        libopencv_xobjdetect.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_xobjdetect.so.4.4
        libopencv_xobjdetect.so (libc6,x86-64) => /usr/lib/libopencv_xobjdetect.so
        libopencv_ximgproc.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_ximgproc.so.4.4
        libopencv_ximgproc.so (libc6,x86-64) => /usr/lib/libopencv_ximgproc.so
        libopencv_xfeatures2d.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_xfeatures2d.so.4.4
        libopencv_xfeatures2d.so (libc6,x86-64) => /usr/lib/libopencv_xfeatures2d.so
        libopencv_viz.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_viz.so.4.4
        libopencv_viz.so (libc6,x86-64) => /usr/lib/libopencv_viz.so
        libopencv_videostab.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_videostab.so.4.4
        libopencv_videostab.so (libc6,x86-64) => /usr/lib/libopencv_videostab.so
        libopencv_videoio.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_videoio.so.4.4
        libopencv_videoio.so (libc6,x86-64) => /usr/lib/libopencv_videoio.so
        libopencv_video.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_video.so.4.4
        libopencv_video.so (libc6,x86-64) => /usr/lib/libopencv_video.so
        libopencv_tracking.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_tracking.so.4.4
        libopencv_tracking.so (libc6,x86-64) => /usr/lib/libopencv_tracking.so
        libopencv_text.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_text.so.4.4
        libopencv_text.so (libc6,x86-64) => /usr/lib/libopencv_text.so
        libopencv_surface_matching.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_surface_matching.so.4.4
        libopencv_surface_matching.so (libc6,x86-64) => /usr/lib/libopencv_surface_matching.so
        libopencv_superres.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_superres.so.4.4
        libopencv_superres.so (libc6,x86-64) => /usr/lib/libopencv_superres.so
        libopencv_structured_light.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_structured_light.so.4.4
        libopencv_structured_light.so (libc6,x86-64) => /usr/lib/libopencv_structured_light.so
        libopencv_stitching.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_stitching.so.4.4
        libopencv_stitching.so (libc6,x86-64) => /usr/lib/libopencv_stitching.so
        libopencv_stereo.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_stereo.so.4.4
        libopencv_stereo.so (libc6,x86-64) => /usr/lib/libopencv_stereo.so
        libopencv_shape.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_shape.so.4.4
        libopencv_shape.so (libc6,x86-64) => /usr/lib/libopencv_shape.so
        libopencv_saliency.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_saliency.so.4.4
        libopencv_saliency.so (libc6,x86-64) => /usr/lib/libopencv_saliency.so
        libopencv_rgbd.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_rgbd.so.4.4
        libopencv_rgbd.so (libc6,x86-64) => /usr/lib/libopencv_rgbd.so
        libopencv_reg.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_reg.so.4.4
        libopencv_reg.so (libc6,x86-64) => /usr/lib/libopencv_reg.so
        libopencv_rapid.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_rapid.so.4.4
        libopencv_rapid.so (libc6,x86-64) => /usr/lib/libopencv_rapid.so
        libopencv_quality.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_quality.so.4.4
        libopencv_quality.so (libc6,x86-64) => /usr/lib/libopencv_quality.so
        libopencv_plot.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_plot.so.4.4
        libopencv_plot.so (libc6,x86-64) => /usr/lib/libopencv_plot.so
        libopencv_photo.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_photo.so.4.4
        libopencv_photo.so (libc6,x86-64) => /usr/lib/libopencv_photo.so
        libopencv_phase_unwrapping.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_phase_unwrapping.so.4.4
        libopencv_phase_unwrapping.so (libc6,x86-64) => /usr/lib/libopencv_phase_unwrapping.so
        libopencv_optflow.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_optflow.so.4.4
        libopencv_optflow.so (libc6,x86-64) => /usr/lib/libopencv_optflow.so
        libopencv_objdetect.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_objdetect.so.4.4
        libopencv_objdetect.so (libc6,x86-64) => /usr/lib/libopencv_objdetect.so
        libopencv_ml.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_ml.so.4.4
        libopencv_ml.so (libc6,x86-64) => /usr/lib/libopencv_ml.so
        libopencv_line_descriptor.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_line_descriptor.so.4.4
        libopencv_line_descriptor.so (libc6,x86-64) => /usr/lib/libopencv_line_descriptor.so
        libopencv_java440.so (libc6,x86-64) => /usr/lib/libopencv_java440.so
        libopencv_intensity_transform.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_intensity_transform.so.4.4
        libopencv_intensity_transform.so (libc6,x86-64) => /usr/lib/libopencv_intensity_transform.so
        libopencv_imgproc.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_imgproc.so.4.4
        libopencv_imgproc.so (libc6,x86-64) => /usr/lib/libopencv_imgproc.so
        libopencv_imgcodecs.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_imgcodecs.so.4.4
        libopencv_imgcodecs.so (libc6,x86-64) => /usr/lib/libopencv_imgcodecs.so
        libopencv_img_hash.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_img_hash.so.4.4
        libopencv_img_hash.so (libc6,x86-64) => /usr/lib/libopencv_img_hash.so
        libopencv_highgui.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_highgui.so.4.4
        libopencv_highgui.so (libc6,x86-64) => /usr/lib/libopencv_highgui.so
        libopencv_hfs.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_hfs.so.4.4
        libopencv_hfs.so (libc6,x86-64) => /usr/lib/libopencv_hfs.so
        libopencv_hdf.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_hdf.so.4.4
        libopencv_hdf.so (libc6,x86-64) => /usr/lib/libopencv_hdf.so
        libopencv_gapi.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_gapi.so.4.4
        libopencv_gapi.so (libc6,x86-64) => /usr/lib/libopencv_gapi.so
        libopencv_fuzzy.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_fuzzy.so.4.4
        libopencv_fuzzy.so (libc6,x86-64) => /usr/lib/libopencv_fuzzy.so
        libopencv_freetype.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_freetype.so.4.4
        libopencv_freetype.so (libc6,x86-64) => /usr/lib/libopencv_freetype.so
        libopencv_flann.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_flann.so.4.4
        libopencv_flann.so (libc6,x86-64) => /usr/lib/libopencv_flann.so
        libopencv_features2d.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_features2d.so.4.4
        libopencv_features2d.so (libc6,x86-64) => /usr/lib/libopencv_features2d.so
        libopencv_face.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_face.so.4.4
        libopencv_face.so (libc6,x86-64) => /usr/lib/libopencv_face.so
        libopencv_dpm.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_dpm.so.4.4
        libopencv_dpm.so (libc6,x86-64) => /usr/lib/libopencv_dpm.so
        libopencv_dnn_superres.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_dnn_superres.so.4.4
        libopencv_dnn_superres.so (libc6,x86-64) => /usr/lib/libopencv_dnn_superres.so
        libopencv_dnn_objdetect.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_dnn_objdetect.so.4.4
        libopencv_dnn_objdetect.so (libc6,x86-64) => /usr/lib/libopencv_dnn_objdetect.so
        libopencv_dnn.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_dnn.so.4.4
        libopencv_dnn.so (libc6,x86-64) => /usr/lib/libopencv_dnn.so
        libopencv_datasets.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_datasets.so.4.4
        libopencv_datasets.so (libc6,x86-64) => /usr/lib/libopencv_datasets.so
        libopencv_cvv.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_cvv.so.4.4
        libopencv_cvv.so (libc6,x86-64) => /usr/lib/libopencv_cvv.so
        libopencv_core.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_core.so.4.4
        libopencv_core.so (libc6,x86-64) => /usr/lib/libopencv_core.so
        libopencv_ccalib.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_ccalib.so.4.4
        libopencv_ccalib.so (libc6,x86-64) => /usr/lib/libopencv_ccalib.so
        libopencv_calib3d.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_calib3d.so.4.4
        libopencv_calib3d.so (libc6,x86-64) => /usr/lib/libopencv_calib3d.so
        libopencv_bioinspired.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_bioinspired.so.4.4
        libopencv_bioinspired.so (libc6,x86-64) => /usr/lib/libopencv_bioinspired.so
        libopencv_bgsegm.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_bgsegm.so.4.4
        libopencv_bgsegm.so (libc6,x86-64) => /usr/lib/libopencv_bgsegm.so
        libopencv_aruco.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_aruco.so.4.4
        libopencv_aruco.so (libc6,x86-64) => /usr/lib/libopencv_aruco.so
        libopencv_alphamat.so.4.4 (libc6,x86-64) => /usr/lib/libopencv_alphamat.so.4.4
        libopencv_alphamat.so (libc6,x86-64) => /usr/lib/libopencv_alphamat.so
(darknet376) vfbsilva@rohan ~ $ sudo /bin/bas
base32    base64    basename  basenc    bash      bashbug   
(darknet376) vfbsilva@rohan ~ $ sudo /bin/bas
base32    base64    basename  basenc    bash      bashbug   
(darknet376) vfbsilva@rohan ~ $ sudo /bin/bash -c 'echo  "/usr/lib/" > /etc/ld.so.conf.d/opencv.conf'
(darknet376) vfbsilva@rohan ~ $ sudo ldconfig

它仍然报告相同的错误。重新编译的Darknet网络未安装opencv,如下所示:

bicycle: 99%
dog: 100%
truck: 94%
OpenCV exception: show_image_cv 
OpenCV exception: wait_key_cv 
OpenCV exception: destroy_all_windows_cv 

解决方法

尝试运行以下命令

sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

sudo ldconfig

然后用安装Opencv的实际位置替换/usr/local/lib

对于Anaconda用户,库可能位于anaconda/envs/env_namexxx/lib

,

编辑: 您可以创建一个指向程序正在搜索的正确版本的simbolic链接,并查看错误消息是否更改

sudo ln -sf /usr/lib/libopencv_gapi.so /usr/lib/libopencv_gapi.so.4.1

如果错误消息更改,则将git checkout更改为4.1.0并再次编译 https://github.com/opencv/opencv/tree/4.1.0

结束编辑;

如果您使用的是https://github.com/AlexeyAB/darknet/的python部分,则无需在MakeFile上使用标志OPENCV = 1编译暗网,因为它可能会引起问题。 如果您的OPENCV在MakeFile上被停用,请尝试以下操作:

conda install -c conda-forge libopencv

您可以在此处https://anaconda.org/conda-forge/libopencv

查看更多说明

您还可以在Installing opencv 3.1 with anaconda python3?

看到类似的问题