Linux编译opencv python时出现错误:ImportError: libjasper.so.1

3

我已经从源代码构建了opencv,并尝试使用Python创建简单的程序,但在终端中遇到了此错误:

 line 3, in <module>
 import cv2
 ImportError: libjasper.so.1: cannot open shared object file: No such file or directory

此外,在尝试编译c++时,我遇到了这个错误。
/usr/bin/ld: warning: libjasper.so.1, needed by 
/usr/local/lib/libopencv_imgcodecs.so.3.1.0, not found (try using -
rpath or -rpath-link)

有人可以帮我解决这个问题吗?


在Ubuntu和CentOS上,您应该能够通过软件包安装此程序(例如,在Ubuntu上安装libjasper-dev)。您正在尝试在哪个操作系统上安装? - Robert Prévost
我正在使用Arch Linux。 - opera97
看起来Arch有一个适用的libjasper版本(https://www.archlinux.org/packages/extra/x86_64/jasper/)。你是否碰巧从源代码构建了libjasper?如果是这样,那么你只需要将libjasper.so.1的位置添加到LD_LIBRARY_PATH中。或者,在构建OpenCV时(使用BUILD_JASPER选项),您可以从源代码构建jasper,并进行静态链接。 - Robert Prévost
我刚刚从AUR安装了这个软件包,但我没有设置任何路径。 - opera97
1个回答

4
我也使用Arch Linux,并遇到了同样的问题,它与opencv链接lib的方式有关。
如果你执行ls -lah /usr/lib | grep libjasper,应该输出以下内容: -rw-r--r-- 1 root root 569K nov 21 16:59 libjasper.a lrwxrwxrwx 1 root root 18 nov 21 16:59 libjasper.so -> libjasper.so.4.0.0 lrwxrwxrwx 1 root root 18 nov 21 16:59 libjasper.so.4 -> libjasper.so.4.0.0 -rwxr-xr-x 1 root root 342K nov 21 16:59 libjasper.so.4.0.0 这本身并没有错,已经安装了libjasper,但问题与版本有关。由于某种原因,当opencv请求lib时,它会加上版本libjasper.so.x,而应该像libjasper.so这样请求它,然后指向libjasper.so.4,然后指向...等等。
我通过创建到lib的符号链接解决了这个问题: sudo ln -s /usr/lib/libjasper.so /usr/lib/libjasper.so.1 虽然这不是最好的方法(可能最好手动编译libjasper),但这可能是最快的方法,而且它有效。
你可以再次运行脚本查看结果。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接