如何解决Python导入cv2时的libpng15共享库导入错误?
解决ImportError: libpng15-c2ffaf3d.so.15.13.0找不到的问题
我之前碰到过类似的OpenCV依赖不兼容的坑,给你几个可行的排查和解决方向:
先排查库文件是否存在
首先用查找命令确认系统里有没有这个特定的libpng库文件:sudo find / -name "libpng15*.so*"如果找到对应的文件,比如路径是
/usr/local/lib,就把这个路径添加到动态库加载路径里:export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH要是想永久生效,可以把上面的命令添加到
~/.bashrc或者~/.zshrc文件末尾,然后执行source ~/.bashrc刷新配置。从源码编译OpenCV(适配系统依赖)
系统apt安装的OpenCV可能和当前系统的libpng版本不匹配,源码编译可以自动适配本地依赖:- 先卸载之前通过apt安装的OpenCV包:
sudo apt remove --purge libopencv-dev python3-opencv - 安装编译所需的基础依赖:
sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev - 克隆OpenCV和扩展模块(如果需要YOLO相关的额外功能):
git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git - 进入OpenCV目录创建编译文件夹并配置cmake:
cd opencv && mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D BUILD_EXAMPLES=OFF .. - 编译并安装:
make -j$(nproc) sudo make install - 最后更新系统库缓存:
sudo ldconfig
- 先卸载之前通过apt安装的OpenCV包:
改用pip安装opencv-python(自带依赖)
如果是Python环境的问题(比如用了虚拟环境),直接用pip安装预编译的opencv-python包,它自带了所有需要的依赖库,不会依赖系统的libpng:pip install opencv-python要是需要YOLOv4用到的额外模块,也可以安装
opencv-contrib-python:pip install opencv-contrib-python
内容的提问来源于stack exchange,提问作者mollstein
相关产品推荐
相关产品推荐

