前言
最近很多人用树莓派跑opencv,我之前也用过,后来最近突然迷上了openCV的应用,就烧录了最新的系统,然后重新安装了opencv的环境,测试的时候发现加载不进来。
提示:
pi@raspberrypi:~ $ 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
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/pi/cv2/__init__.py", line 3, in <module>
from .cv2 import *
ImportError: /home/pi/cv2/cv2.cpython-37m-arm-linux-gnueabihf.so: undefined symbol: __atomic_fetch_add_8
提示找到不到cv2.cpython-37m-arm-linux-gnueabihf.so 一个未定义的__atomic_fetch_add_8, 搜了一下发现github上面有官方的issue,里面说这个是一个bug, 难怪很多人抱怨安装不来opencv呢。
其实只需要加载一下一个库文件就好了。
LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1
把这一条加载到/etc/bashrc 或者 /etc/profile文件里面就好了,我是直接加载到pi用户的初始化脚本里面了。
vim.tiny .bashrc
添加:export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1
保存,退出。
source .bashrc
然后进入python3的环境再测试。
小bug解决了,每次开机也都不用担心了。