树莓派3b+快速编译opencv成功案例指导(保姆级教程)

如果对opencv的版本没有特别要求建议直接去找已经安装好opencv的镜像。那个才是最快的速度!

    真是亲身体验!就差人傻了!先1我的对树莓派基本小白一个好吧,只能出一个傻瓜式教程了。

不想看傻瓜式教程的同学可以结合以下两篇博主的问答,自行摸索。(1条消息) 树莓派安装opencv详细过程及遇到常见问题解析_山重水复疑无路@的博客-CSDN博客_树莓派安装opencv失败树莓派安装Opencv方法总结,包括各种报错解决方法_Small_Fish25的博客-CSDN博客_树莓派安装opencv 本人亲身经历,两篇文章结合能最快结束战斗!!!

我将两位博主的文章结合了起来,总算成功安装了!!先感谢这两位博主!!!山重水复疑无路@山重水复疑无路@的博客_CSDN博客-PLC学习系列,C++学习系列,安装软件过程系列领域博主和Small_Fish25Small_Fish25的博客_CSDN博客-Python 专题,Go语言 专题,数据结构与算法 专题领域博主

卸载opencv
很有可能安装的版本错误啊等等各种问题导致你要重新安装!

查看已安装的opencv版本

pkg-config --modversion opencv


卸载

方法1:找到安装opencv的build目录,进入该目录进行卸载。比如我安装在/home/pi/Downloads/opencv-4.0.0/build

cd /home/pi/Downloads/opencv-4.0.0/build
sudo make uninstall
cd  ..
rm -r build



方法2:不知道安装目录在哪,则可以重新建立build目录安装对应版本,然后再执行上边卸载步骤。然后清理/usr中所有opencv相关项

rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*  
cd /usr  
find   -name "*opencv*" | xargs sudo rm -rf  


移除python相关

apt-get remove-doc opencv-data python-opencv

安装opencv
安装前环境准备
安装树莓派系统
去官网下载系统镜像,链接贴上:Raspberry Pi OS Downloads
下载如下带桌面的Raspberry Pi OS就可以。

下载完成之后解压,注意路径中不能有中文字符,避免在使用镜像写入工具时出错。

格式化内存卡
准备一个16GB或者以上的内存卡,在我的电脑右键–管理–磁盘管理,查看是否只有一个分区,应该是只有一个分区,且为FAT32.

写入镜像文件
将 .img 镜像文件写入 SD卡,可以使用 Win32 Disk Imager,下载链接:Win32 Disk Imager下载
运行Win32 Disk Imager之后,选择我们下载解压后的img镜像,设备选择TF卡,点击写入,确定,等待写入完成即可。


4.将SD插入树莓派(最好配个显示屏)上电后系统即会开始安装系统,进行简单设置后即可开始使用。

拓展树莓派的文件系统
在树莓派终端(或者SSH)上输入:$ sudo raspi-config

然后选择“高级选项”菜单项,选择第7个


然后选择“扩展文件系统”

选择第一个回车,会让你重启树莓派,选择立即重启

注:如果不能重启,则输入sudo reboot重启

重新启动后,文件系统已经扩展为包括micro-SD卡上的所有空间。可以通过执行df -h 检查输出来验证磁盘是否已扩展。


已经释放掉所有内存 容量变成15G!Over!

更换树莓派源为国内镜像源
更换镜像源主要就是为了解决树莓派每次下载都要“远隔重洋”去获取资源时的“龟速”问题

在树莓派的命令行界面输入

sudo nano /etc/apt/sources.list

使用nano编辑器编辑source.list

使用键盘方向键控制,在第一行开头加一个#,把下面的内容拷贝到最后一行之后

清华镜像源

注:网址末尾的raspbian重复两次是必须的。因为 Raspbian 的仓库中除了APT软件源还包含其他代码。APT软件源不在仓库的根目录,而在raspbian/子目录下。

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib


中科大镜像源

deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.ustc.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi


先按键盘上的ctrl+o,再按回车保存,再按ctrl+x退出 nano 编辑器回到命令行界面。再输入sudo apt-get update命令更新到清华大学/中国科技大学镜像源最新的软件列表。

​ 使用命令lsb_release -a查看当前树莓派系统版本,具体信息如下,此版本的代号为 “buster”

pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID:    Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:    10
Codename:    buster



然后去看了一下使用镜像源的地址(刚才设置的是buster),如果你使用的版本代号为 “stretch”

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
1
2
那么把对应的 “stretch” 改为“buster”就行了

今后在树莓派命令行中执行sudo apt-get install 软件名时便会自动从清华/中科大开源软件镜像站高速下载

最好再重启一下树莓派


sudo reboot

给树莓派增加交换空间SWAP
在开始编译前,建议你增加交换空间。这将使你使用树莓派的所有四个内核来编译OpenCV,而不会由于内存耗尽导致编译挂起。

输入

sudo nano /etc/dphys-swapfile

打开 / etc / dphys - swapfile文件

然后编辑 CONF_SWAPSIZE 变量为2048或1024:


重新启动交换服务

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start



注意:增加交换空间的大小可能烧坏树莓派 microSD卡,因此在我们后续编译完成之后就再改回CONF_SWAPSIZE

正式安装
更新系统
输入sudo apt-get update && sudo apt-get upgrade更新系统

安装OpenCV所需要依赖的工具和一些图像视频库
安装CMake开发人员工具

输入如下命令安装build-essential、cmake、git和pkg-config

sudo apt-get install build-essential cmake git pkg-config 


安装常用图像工具包:使我们可以从磁盘加载各种图像文件格式

输入如下命令安装jpeg格式图像工具包

sudo apt-get install libjpeg8-dev 


输入如下命令安装tif格式图像工具包

sudo apt-get install libtiff5-dev 


安装JPEG-2000图像包

sudo apt-get install libjasper-dev 


安装png图像工具包

sudo apt-get install libpng12-dev


安装常用视频库:使我们从磁盘读取各种视频文件格式,以及直接使用视频流

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev


 

sudo apt-get install libgtk2.0-dev


安装数值函数优化包

sudo apt-get install libatlas-base-dev gfortran


装Python 2.7和Python 3头文件,这样我们就可以使用Python绑定编译OpenCV

sudo apt-get install python2.7-dev python3-dev

下载OpenCV


注意注意,这个地方是一个重要的点,初学者刚开始都是想着用网上查到的指令直接下载对应的OpenCV,而且网上大部分都是这种方法,但是我亲测这种方式非常不可靠,我下了N多次都是没有下够正确的大小(一般),如图所示:

这些都是我用指令下载的OpenCV压缩包,没有一个是可以用的,所以在这里我也不放指令的下载方式了,这种方式可能因为代码源的问题,传输速度非常慢而且极不稳定。另外我也尝试过在官网上下载,但下在途中总会出现下载错误,无法继续下载:

我觉得最好用的是通过百度网盘进行下载:
以下是我的百度网盘下载地址(3.4.0版本的)如果需要其他版本,可以自己在网上找找,很多资源的。
1、OpenCV 3.4.0
链接:https://pan.baidu.com/s/1wDaVt86GPhKh6GgmNP-1DQ
提取码:e47c

2、opencv_contrib-3.4.0
链接:https://pan.baidu.com/s/1SwlCXBL8PUTw5qfYRMQiHA
提取码:8mbz
下载完成后我是有U盘给拷贝到树莓派里,这里要注意一定要把压缩包放在/home/pi/Downloads目录下(一定不能错)

解压这两个压缩包

cd /home/pi/Downloads
unzip opencv-3.4.0.zip
unzip opencv_contrib-3.4.0.zip



这其中一个大坑一定要注意,我填坑至少花费了两天时间。大家可以吸取教训。

设置编译参数

cd /home/pi/Downloads/opencv-3.4.0
mkdir build
cd build



设置CMAKE参数,注意,下面这是一行命令(包括最后那俩点儿),需要耐心等待十五分钟左右:

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。如果失败,可能是因为两个压缩包的路径没有严格按照上文的要求。如果成功,就可以开始最重要的编译了。
该图取自(跟着自豪学树莓派中)

这个给地方只要是按照上文所说的做,一般是没有问题的。
 

编译OpenCV
编译

输入命令

sudo make -j4 2>&1 | tee make.log

开始编译

注意:

​ 以管理员身份,否则容易出错

PS:

首次使用树莓派系统时,默认用户是pi ,密码为raspberry。

要想使用root帐号,或者说开启root用户,可使用pi用户登录,执行下面命令(此命令是给root账户设置密码的,当切换到root管理员后,此命令无效)

sudo passwd root  

说明:sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等
执行此命令后系统会提示输入两遍的root密码(用来确保你记住了密码)。

ps:输密码的时候看不到******* 你不用管 输完回车就好了

接着输入下面命令,用来解锁root账户

sudo passwd --unlock root 

用下面命令切换到root管理员,会提示输入密码

su root  

从root用户切换到pi用户

 su pi

​ make命令参数-j4指允许make使用最多4个线程进行编译,这样编译速度会更快!但是如果没有增加交换空间的话就老老实实只用make

​ 使用tee命令可以将编译过程中终端显示的信息保存到make.log文件中,便于查看,这样即使VNC断线,终端的* 信息太多看不到,也 可以通过make.log文件查看编译过程。

该部分转载自忆逍遥大佬的博客,大家可以区看看写的非常好,棒!
1.在编译到75%左右时可能会出现openc_contrib 提示缺少boostdesc_bgm.i文件而出错(我24%也报过错,88%也报过错,100%也报过。不过用下面的方法都解决了)
这个是由于官方所给的那两个包不全,(没有此错误的可以忽略)
解决方法如下:
可以在我的百度云盘里下载然后将所有带i结尾的文件全部都拷贝到 opencv_contrib/modules/xfeatures2d/src/ 路径下即可
树莓派安装opencv时丢失的文件:
链接:https://pan.baidu.com/s/1xi6_5NuTFiP4SD649FgIJw
提取码:mbsj
然后继续上面的编译操作即可

2.在编译到94%左右时可能会出现fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录的错误标志 (没有此错误的可以忽略)
这个是由于之前在树莓派的python2环境下安装了opencv所致
解决方法如下:
将/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目录下即可解决

补充:vgg.cpp.o] Error 1

make[2]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/build.make:341: modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/vgg.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:14553: modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

出现这个错误的话,也是把缺失的文件(上面云盘压缩包里有)复制拷贝到

/home/pi/Downloads/opencv_contrib-3.4.0/modules/xfeatures2d/src

就OK了。

3.对于树莓派4B,在编译到99%左右时可能会出现(本人3b+也出现了,亲测有效)
make[2]: *** [modules/python3/CMakeFiles/opencv_python3.dir/build.make:63:modules/python3/CMakeFiles/opencv_python3.dir/__/src2/cv2.cpp.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:21769:modules/python3/CMakeFiles/opencv_python3.dir/all] 错误 2
make: *** [Makefile:163:all] 错误 2
的错误标志(没有此错误的可以忽略)
这个可能是由于系统版本不同和树莓派版本的不兼容所致
解决方法如下:
首先找到/home/pi/Downloads/opencv-3.4.0/modules/python/src2 中的cv2.cpp文件,
然后在第885行把char* 改成 const char* 即可解决,最后继续上面的编译操作即可。

编译成功即可安装,胜利!

2、//安装

sudo make install 

å¨è¿éæå¥å¾çæè¿°

3、//更新动态连接库

输入

sudo ldconfig

注意:是 L 的小写 l 而不是 i 的大写哦

!!!!这个时候你是不是忘记了什么事情?

对! 不要忘记回到 /etc/dphys-swapfile 文件并将 CONF_SWAPSIZE 重置为 100,然后重新启动交换服务

sudo nano /etc/dphys-swapfile


修改CONF_SWAPSIZE=100

重启交换服务

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start


安装就结束了,可以删除之前的源代码包,释放空间

rm -rf opencv-4.1.0 opencv_contrib-4.1.0

配置Opencv
配置opencv.conf
输入命令打开opencv.conf配置文件

sudo nano /etc/ld.so.conf.d/opencv.conf



在文件末尾加入如下内容,并保存推出

 /usr/local/lib
 ?


如图所示:

å¨è¿éæå¥å¾çæè¿°


输入如下命令,更新下

sudo ldconfig


bash.bashrc 配置文件
输入命令

sudo nano /etc/bash.bashrc

打开bash.bashrc配置文件

在最后添加如下内容:(后面会讲pkgconfig和PKG_CONFIG_PATH是什么)

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig       
export PKG_CONFIG_PATH


保存退出后输入命令sudo reboot重启树莓派

对了最后如果不放心可以测试一下
测试:

python3
import cv2
cv2.__version__

如果出现如图结果,这说明OpenCV3.4.0安装成功,胜利!

————————————————
参考文章:(1条消息) 树莓派安装opencv详细过程及遇到常见问题解析_山重水复疑无路@的博客-CSDN博客_树莓派安装opencv失败

(1条消息) 初次使用树莓派并启用root管理员(登录root管理员)_我的blog屋-CSDN博客_树莓派管理员权限打开文件

树莓派安装Opencv方法总结,包括各种报错解决方法_Small_Fish25的博客-CSDN博客_树莓派安装opencv


版权声明:本文为sugerdog原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。