树莓派上安装OpenCV (2020-09-20)
一、树莓派环境
-
硬件:树莓派3B+
-
镜像系统:2019-04-08-raspbian-stretch-full.img
二、换源更新(已换源可跳过这一步)
1、打开sources.list文件进行修改
sudo nano /etc/apt/sources.list
2、用 # 注释掉或删掉原文件内容,用以下内容取代(Ctrl + O 保存再 Ctrl + X 退出)
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
3、打开raspi.list文件进行修改
sudo nano /etc/apt/sources.list.d/raspi.list
4、用 # 注释掉或删掉原文件内容,用以下内容取代(Ctrl + O 保存再 Ctrl + X 退出)
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
5、 更换pip软件源
为加速Python pip安装速度,特更改Python软件源,操作方法:
pip install pip -U
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
6、 重启
以上步骤均完成之后,需要进行重启才生效,重启命令如下:
sudo reboot
7、更新软件
sudo apt-get update
sudo apt-get upgrade
三、扩充树莓派空间
1、执行下面指令打开配置选项,选择 7 Advanced Options
sudo raspi-config
2、再选择第一项 A1 Expand Filesysem
3、选择确定,之后选择 finish,再重启
四、搭建 OpenCV 开发环境
1、下载依赖库
#安装numpy
sudo pip3 install numpy
#安装OpenCV相关工具
sudo apt-get install build-essential git cmake pkg-config -y
#安装jpeg格式图像工具包
sudo apt-get install libjpeg8-dev -y
#安装tif格式图像工具包
sudo apt-get install libtiff5-dev -y
#安装JPEG-2000图像工具包
sudo apt-get install libjasper-dev -y
#安装png图像工具包
sudo apt-get install libpng12-dev -y
#安装视频I/O包
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
#安装gtk2.0
sudo apt-get install libgtk2.0-dev -y
#优化函数包
sudo apt-get install libatlas-base-dev gfortran -y
#安装Python开发包
sudo apt-get install python-dev python3-dev -y
【特别提醒,如果出现:】
下列软件包有未满足的依赖关系:
cmake : 依赖: libcurl3 (>= 7.16.2) 但是它将不会被安装
请执行: sudo apt-get install libcurl3 后再执行以上内容
2、下载 OpenCV 3.4.0
(1) 选择下载目录
选择下载目录时,要根据后面 cmake 时的路径相对应,我直接下载在 /home/pi/Downloads 目录下,进入下载目录
cd /home/pi/Downloads
(2) 下载并解压
执行以下指令进行下载和解压,第一个压缩包86.8MB,第二个压缩包54.5MB
#下载
sudo wget -O opencv-3.4.0.zip https://github.com/Itseez/opencv/archive/3.4.0.zip
sudo wget -O opencv_contrib-3.4.0.zip https://github.com/Itseez/opencv_contrib/archive/3.4.0.zip
#解压
sudo unzip opencv-3.4.0.zip
sudo unzip opencv_contrib-3.4.0.zip
3、编译安装 OpenCV 3.4.0
(1) 创建编译目录
#进入目录
cd /home/pi/Downloads/opencv-3.4.0
#创建编译目录
sudo mkdir build
cd build
(2) 编译源码 cmake。 注意,下面这是一行命令(包括最后那俩点儿),需要耐心等待十五分钟左右:
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-3.4.0/modules -D BUILD_EXAMPLES=ON -D WITH_LIBV4L=ON PYTHON3_EXECUTABLE=/usr/bin/python3.5 PYTHON_INCLUDE_DIR=/usr/include/python3.5 PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.5/site-packages/numpy/core/include ..
根据下图判断你是否配置成功了CMAKE。如果失败,可能是因为两个压缩包的路径没有严格按照上文的要求。如果成功,就可以开始最重要的编译了。

在 cmake 的时候,可能会由于网络的原因有些文件下载失败,在make的时候会出现 fatal error: boostdesc_bgm.i: No such file or directory 类似的错误,基本上是因为缺失这几个文件:
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
遇到这种情况可以换个热点试试,如果还是下载不下来, 我这里提供这几个文件的下载地址:https://pan.baidu.com/s/1bpEG7NIJfAWCB47N27l9BA
提取码:hhlm
下载好后,把它们放到 ~/Downloads/opencv_contrib-3.4.0/modules/xfeatures2d/src/ 目录下即可
(3) 编译源码 make
最后一步,也是最重要的一步:编译
保证树莓派有至少5G的存储空间,建议本命令用树莓派桌面上的命令行工具运行,而不要使用远程ssh连接。因为执行命令时间太长,中途如果ssh断线的话无法得知是否已经安装完毕。
#编译源码,漫长的等待~~~(五个小时左右)
cd /home/pi/Downloads/opencv-3.4.0/build
sudo make
在make的时候,可能会出现 opencv2/xfeatures2d/cuda.hpp no such file or directory #include "opencv2/xfeatures2d/nonfree.hpp" 类似的错误,这是因为找不到你的.hpp文件,咱们就手动添加路径来解决这个问题
静待五个小时的编译。注意,在此期间,树莓派要供电充足,不要运行其它任务,以免因为内存不够什么的幺蛾子报错。

make
命令执行完成之后,执行下面的命令,执行命令需要一分钟:
sudo make install
五、测试是否安装成功
在终端输入以下指令
python3
>>>import cv2
>>>cv2.__version__
'3.4.0'
如果出现 OpenCV 的版本 3.4.0,说明安装成功,至此,树莓派3B+搭建OpenCV3.4.0开发环境完成!
本文参考:https://www.jianshu.com/p/56929416b4a1
后记:
一开始是下载的 OpenCV3.4.3进行安装的,但每次 make 的时候到 80% 就报错,是的,等待了四个多小时等来的报错,心痛!之后尝试安装 OpenCV3.4.0 的版本,比较顺利,不过有几点需要注意
- 安装前切记更换源,别用树莓派自带的源
- 在 make 的时候别加什么 -j4 啥的(血写的教训),直接 make 就OK了
- 不要使用远程ssh连接,编译过程中可能会断,尽量直接使用屏幕、键盘、鼠标直接连接树莓派