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

2023-05-16

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • SpringMVC常见面试题总结(超详细回答)

    1 什么是Spring MVC xff1f 简单介绍下你对springMVC的理解 Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架 xff0c 通过把Model xff0c View xff0c
  • 微信聊天记录导出

    想把微信记录导出来 xff0c 并保存成txt或者csv格式的文件 xff0c 网上常用的方法是先把手机root xff0c 然后再获取微信聊天记录数据库 xff0c 然后再对数据库破解 有些android手机进行root xff0c 可能
  • iOS开发之NSMethodSignature(方法签名)

    OC中方法调用有三种 xff1a 第一种 xff1a 直接调用 span class token operator span span class token punctuation span span class token keywor
  • ios开发之离屏渲染

    前言 UIView和CALayer关系 UIView继承自UIResponder xff0c 可以处理系统传递过来的事件 xff0c 如 xff1a UIApplication UIViewController UIView xff0c 以
  • ios自定制Tabbar

    这是得物iOS开发一道面试题 xff0c 要求详细描述自定义Tabbar UITabBarController也可以轻松地管理多个控制器 轻松完成控制器之间的切换 xff0c UITabBarController的展现形式就是平时大家手机上
  • ios逆向开发

    对ios逆向开发感兴趣的小伙伴可以查看一下链接内容 xff1a ios逆向开发
  • iOS开发常用加密

    Https加密流程详见博主Https加密流程第十条 其他常用加密方式 一 Base64 Base64加密原理 xff1a 1 原本数据一个字符为8bit xff0c 每3个字符为一组 xff0c 即 xff1a 3 8 2 编码过程中 xf
  • iOS开发细碎知识点总结二

    struct和class的区别 我们先了解栈和堆的区别 1 栈的特点 分配空间小 但是存在栈上的数据访问效率高 2 堆的特点 分配空间相对较大 但是数据访问相对于栈 效率底下 swift中struct与的class的区别 1 class是引
  • iOS开发之相册

    需求一 xff1a 简单的选择一张图片 在iOS开发中如果要调用相机拍取照片或者是直接获取相册中的照片 xff0c 那么调用UIImagePickerController是个不错的选择 UIImagePickerController继承于U
  • 一个小白对微信小程序的理解

    一 小程序开发框架组成介绍 首先介绍一个小程序宿主环境差异 xff0c 其中iOS是基于JavaScriptCore xff0c Android是基于X5内核 xff0c IDE是基于nwjs 1 WXML xff08 WeiXin Mar
  • 池塘里有4只鸭子,4只鸭子在同半圆中的概率(C语言版)

    将原来你是小幸运大佬的Python版代码改写为C语言版代码 xff0c 作为新手练习 原文链接如下 xff1a 4只鸭子在同一个圆圈内游泳 xff0c 问 xff1a 4只鸭子出现在同一个半圆内的概率是多少 xff1f Python解答 原
  • VirtualBox上安装ArchLinux步骤整理

    粗体 xff08 一 xff09 系统安装 从archlinux官网下载linux镜像 xff1a archlinux 2016 12 01 dual iso在virtualbox中加载镜像启动 xff0c 进入root cd dev 下
  • 数据结构设计题大题总结(非代码)

    文章目录 二叉树二叉树遍历孩子兄弟表示法平衡二叉树旋转过程哈夫曼树的构造森林 树与二叉树互转 图邻接矩阵 邻接表与图图的深度搜索与广度搜索Prim算法与Kruskal算法最短路径与AOE网 xff08 Activity on edge ne
  • 轻松通关Flink第24讲:Flink 消费 Kafka 数据业务开发

    在上一课时中我们提过在实时计算的场景下 xff0c 绝大多数的数据源都是消息系统 xff0c 而 Kafka 从众多的消息中间件中脱颖而出 xff0c 主要是因为高吞吐 低延迟的特点 xff1b 同时也讲了 Flink 作为生产者像 Kaf
  • 痛苦的ubuntu 18.043

    文章目录 添加驱动源使用TAB键查看能安装的驱动版本号 刚开始就进不去桌面 xff0c 然后看了教程得在在quite splash 加 nomodeset才能关闭显卡进入桌面 进了系统之后还是跟着https blog csdn net ne
  • Tbox(Can转Tcp),支持有线连接和4G无线连接两种方式

    本司Tbox有如下优点 xff1a 1 支持Can工作模式的远程配置包括波特率 帧类型 过滤ID设置 xff1b 2 tcp支持以太网和无线两种方式 xff0c 无线支持多种网络制式 xff1b 3 采用cotex A7内核处理器 xff0
  • SQL复习

    like 字符匹配 1 xff1a 匹配一个字符 例如 xff1a 查找姓张且名字为三个字的学生信息 select from student where name like 张 2 xff1a 匹配0个或多个字符串 例如 xff1a 查找姓
  • 回溯-切割问题:分割回文串/复原IP地址

    131分割回文串 在代码里什么是切割线呢 xff1f 递归参数需要传入startIndex xff0c 表示下一轮递归遍历的起始位置 xff0c 这个startIndex就是切割线 span class token keyword clas
  • 回溯-子集问题/子集I II/递增子序列

    78 子集 span class token keyword class span span class token class name Solution span span class token punctuation span sp
  • 回溯-排列问题/全排列I II

    46 全排列 这里和77 组合问题 opens new window 131 切割问题 opens new window 和78 子集问题 opens new window 最大的不同就是for循环里不用startIndex了 因为排列问题

随机推荐