树莓派安装 OpenCV 环境是真的烦,经历过的人都懂。我从开始安装到安装成功,整整花费了12天,在 sudo make 一环失败了7次,其他地方也有各种大大小小的问题,当然也有我白天上班只有晚上有时间折腾的原因。以下就是我在安装过程中遇到的的各种问题,图就不贴了(因为忘记截图了-_-!,好不容易成功再来一遍也懒得搞),我会尽量的把问题描述清楚。另外,每个人遇到的问题可能不同,即使相同的问题不同的机器解决方法也可能不一样,我也做不到尽善尽美。首先要保证sd卡>16G。
一、使用apt-get 命令下载OpenCV依赖包速度慢以及部分OpenCV依赖包下载失败(解决方法:换源)
树莓派系统默认使用国外的镜像源,国内访问速度非常慢,因此需要换成国内源。官网列出了换源列表 RaspbianMirrors - Raspbian。我使用的是中科大的源。
1、备份原源文件以及查看源版本
在树莓派命令行界面输入以下命令备份源文件,
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo cp/etc/apt/sources.list.d/raspi.list/etc/apt/sources.list.d/raspi.list.bak
树莓派系统是是基于debian改造出来的,在2016年2月发布了树莓派 3B,采用64位处理器的树莓派 3B,虽然具有64位硬件,但是系统依旧使用的是基于debian 8 的 32位的Jessie,所以不能完全的释放出树莓派3B的性能,随着debian升级到了最新的debian 9 stretch,到了2017-08树莓派对官方系统的版本号进行了更新,由之前的jessie升级到了基于最新64位的debian 9 stretch,而现在最新的应该是Debian 10 buster。
具体型号可以通过终端输入:lsb_release -a 命令来查看自己的系统到底是 jessie、strerch 还是 buster。而对应的,只需要将下面换源的命令中相应的地方进行修改即可,我的系统是 buster。
2、换源
输入命令:sudo nano/etc/apt/sources.list
将源代码给删掉或注释掉,将下面命名写入第一行:
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ buster main contrib non-free rpi
Ctrl+O 保存,回车,Ctrl+X退出。
输入:sudo nano/etc/apt/sources.list.d/raspi.list
将源代码给删掉或注释掉,将下面命名写入第一行:
deb http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/ buster main ui
Ctrl+O 保存,回车,Ctrl+X退出。
3、更新源
sudo apt-get update
4、更新软件
sudo apt-get upgrade
5、下载OpenCV依赖包
sudo apt-get install build-essential cmake git pkg-config
sudo apt-get install libjpeg8-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libjasper-dev
sudo apt-get install libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install libopencv-dev
二、使用wget命令下载OpenCV压缩包以及OpenCV_contrib压缩包速度慢以及压缩包内容缺失导致无法解压(解决办法:找到对应的网址通过电脑下载后使用filezilla或U盘导入树莓派)
我这里下载的是 opencv-3.4.4.zip 以及对应的 opencv_contrib-3.4.4.zip(版本号一定要对应)。由于 wget -O 命令下载速度太慢,我通过电脑下载后,使用 FileZilla 导入树莓派的 /home/pi目录下。FileZilla 的使用方法:
在主机处输入树莓派ip,输入你的用户名、密码,如果你连接过ssh,端口号输入22即可。点击“快速连接”,连接成功后在下方分别点开你要传送的文件的所在目录以及终点目录,双击文件即可传送。
网址:https://github.com/Itseez/opencv/archive/3.4.4.zip
https://github.com/Itseez/opencv_contrib/archive/3.4.4.zip
接下来解压zip:
unzip opencv-3.4.4.zip
unzip opencv_contrib-3.4.4.zip
三、sudo make 前的一些准备(避免采坑,一次成功)
1、扩展内存
输入 sudo raspi-config ,找到第七行 Advanecd Options 进入,选择第一条 Expand Filesystem。重启树莓派。
2、提前准备缺失文件( 缺少boostdesc_bgm.i文件和vgg_generated_120.i文件等)
在如下链接处下载缺失的文件包
链接:https://pan.baidu.com/s/1xi6_5NuTFiP4SD649FgIJw
提取码:mbsj
此处引用 CSDN博主「忆逍遥」的原创文章, 原文链接:https://blog.csdn.net/weixin_43308627/article/details/97814927
将所有带 i 结尾的文件全部都拷贝到 opencv_contrib/modules/xfeatures2d/src/ 路径下即可。拷贝方法可用上文提到的 filezilla。
3、提前解决 fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录
将/home/pi/Downloads/opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2目录下的xfeatures2d文件夹和xfeatures2d.hpp文件复制粘贴到 /home/pi/Downloads/opencv-3.4.0/modules/stitching/include/opencv2目录下即可。
4、开始编译
进入到已解压的 opencv-3.4.4 中: cd opencv-3.4.4,
mkdir release
cd release
修改参数:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
- D CMAKE_INSTALL_PREFIX=/usr/local \
- D INSTALL_PYTHON_EXAMPLES=ON \
- D INSTALL_C_EXAMPLES=OFF \
- D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules \
- D PYTHON_EXECUTABLE=~/usr/bin/python \
- D BUILD_EXAMPLES=ON ..
输入指令: sudo make 开始编译(漫长的等待)
编译完成后,输入 sudo make install 进行编译安装。
输入 sudo ldconfig 更新动态链接库。
如果 sudo make 环节失败,一定要删除 release文件夹(在 opencv-3.4.4 文件夹中),根据错误提示进行调整后重新 sudo make。如果不删除会导致内存爆满从而无法连接 VNC。