如果对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

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

  1. opencv的安装保姆级教程,并在pycharm下配置opencv

    本人在这三周不断的试着安装opencv的过程中积累了一些关于安装opencv的经验:想的把自己的积累分享出去,也是第一次写技术博客:有什么不足请见谅: 正文: 1.安装python和pycharm(按 ...

  2. 树莓派4B 安装 Tensorflow 1.13.1 保姆级教程

    目录 前排感谢 下载系统烧录工具 使用Mobaxterm连接树莓派 安装远程桌面Xrdp 安装Python3.7.3 安装Tensorflow 1.13.1 我遇到的问题及解决方案 问题1:proto ...

  3. 快速搭建个人博客——保姆级教程

    文章目录 序言 本地网站 开发工具 WebStorm Vscode 框架 Hexo(强烈推荐) WordPress 本地环境 git node.js Hexo 安装 初始化 主题 样式 Butterf ...

  4. Quazip的编译及使用,保姆级教程

    现有的开发环境:Windows10 + VS2017 + Qt5.9.9 背景:最近因项目所需,需要使用压缩包,看了一圈儿,发现基于QT 的大都是Zlib+Quazip来搞的. 说明:zlib和qua ...

  5. 反编译微信小程序保姆级教程(PC端程序包)

    本教程仅供学习,请勿用于非法途径,代码抄袭属于违法行为,尊重他人才是尊重自己 我一比较啰嗦,二比较懒.前方一堆屁话,正文移步到第二段!!!   这段时间一直在研究html.css.JavaScript ...

  6. 树莓派3B+ 人脸识别(OpenCV)

    树莓派3B+ 人脸识别(OpenCV) 相信大家都看了前面的OpenCV安装和人脸检测教程,已经跃跃欲试,想要进行人脸识别了,现在我们正式进入重头戏--人脸识别 的教程. 注意:该教程面向python ...

  7. 在Linux下使用树莓派交叉编译工具编译opencv库并进行移植

    一.交叉编译opencv 继上一篇博客:"在Linux下配置opencv"之后,我以为直接将编译命令:g++ `pkg-config --cflags opencv` -o Tes ...

  8. 快速上手Springboot项目(登录注册保姆级教程)

    本文章对SpringBoot开发后端项目结构做了简单介绍,并示范了使用SpringBoot+MySQL实现登录的后端功能,与本博客的另一篇文章 Vue 实现登录注册功能(前后端分离完整案例) | Ma ...

  9. XML快速入门的保姆级教程!!!

    XML快速入门的保姆级教程!!! 简介 基础语法 组成部分 约束 约束分类 DTD schema 解析 Jsoup Jsoup:工具类,可以解析html或xml文档,返回Document对象 Docu ...

最新文章

  1. python 和 torch 交叉熵损失
  2. 再读《被神化的框架》
  3. 使用@Rule在JUnit中测试文件和目录
  4. 历史上的今天:首条海底光缆开通;VeriSign 收购 Network Solutions;计算机图形学先驱诞生...
  5. java的小区车辆管理系统_基于Java的小区车辆信息管理系统的设计与实现
  6. STM32示波器设计
  7. 如何将angular-ui-bootstrap的图片轮播组件封装成一个指令
  8. 用HBuilderX代替微信开发者工具
  9. CSDN博客之星——找到自己的榜样
  10. 宝讯网捷:拼多多商家如何做好运营?
  11. 影视后期制作学习第四天(AE)
  12. 上海证券交易所国债买断式回购交易实施细则
  13. 单点遥信发送表里一般都有什么变量啊?
  14. 树莓派打造无线共享打印机
  15. php实训表单验证的日记心得,php实训心得
  16. textpad:工具中没有编译
  17. java指针压缩临界值
  18. 阿里云的学生机服务器
  19. Splashtop 教育行业用户增加700%
  20. upc9520: Knight (象棋马从(0,0)到(n,m)的最小步数)

热门文章

  1. 单片机作业 可乐浇汁 “苦乐交织”
  2. 新网(万网)账户间域名的转移
  3. AccountManager.createAccount异常
  4. ibm电脑服务器郑州维修,郑州IBM ThinkPad笔记本芯片级维修中心
  5. 强大的PubMed插件Scholarscope
  6. linux配置selinux为许可模式,SELinux安全配置,详细说明
  7. Ubuntu 版本的命名规则和开发代号
  8. SEO 一般优化步骤
  9. 介绍汽车美容预约小程序app开发
  10. CISP学习笔记2:风险管理1