opencv的安装方式主要有两种:
编译安装时间过长,我本次用的还是第一种方法,但同样踩了一堆错误。现在提供给大家几处解决方法。
> Traceback (most recent call last): File "" , line 1, in
> <module> File
> "/usr/local/lib/python3.7/dist-packages/cv2/__init__.py", line 3, in
> <module>
> from .cv2 import * ImportError: libjasper.so.1: cannot open shared object file: No such file or directory
类似此项的属于相关依赖没有下载全,比如这个例子里的libjasper.so.1,没记错应该sudo apt-get install libjasper-dev -y
下载相关依赖即可。
以此类推 看仔细自己报错内容,下载相关依赖即可,附上几条常用的:
sudo apt-get update
sudo apt-get install libhdf5-dev -y
sudo apt-get install libatlas-base-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libqt4-test -y
sudo apt-get install libqtgui4 -y
sudo apt-get install libhdf5-serial-dev -y
sudo apt install libqtgui4 -y
sudo apt install libqt4-test -y
sudo apt-get update
缺哪个下载哪个就行,这上面没有的直接搜也可搜到。
Traceback (most recent call last):
File "" , line 1, in <module>
File "/usr/local/lib/python3.7/dist-packages/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: /usr/local/lib/python3.7/dist-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8`
cv2.so这个错误据树莓派上安装Opencv遇到的小bug解决方法(该博客内有解决方案)此博客给出的解释是
发现github上面有官方的issue,里面说这个是一个bug, 难怪很多人抱怨安装不来opencv呢。
据此我找到了一个github地址,可能是原解决方案
opencv: undefined symbol: __atomic_fetch_add_8 #59
The workaround is:
pi@raspberrypi:~ $ LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1 python3
Python 3.7.3 (default, Apr 3 2019, 05:39:12)
[GCC 8.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
即在终端加上这么一句话
LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1
上面的博客给出的解决方案和这个一样,不过他添加进了.bashrc文件中,避免每次启动都要输入这么一句话。
终端完美解决
树莓派自带的pythonIDE仍然报错
主要参考这篇文章在树莓派上安装基于python3的OpenCV
简而言之,在2019.11.17之后4.x.x的版本就会报上述错误
先卸载掉
sudo pip3 install opencv-python
再换上3.x.x的版本即可
解决方法由这篇文章提供ImportError: /usr/local/lib/python3.7/dist-packages/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8 #67