树莓派3B+opencv环境搭建(基于Raspbian2019.7.10版本)

前言

网络上有好多树莓派安装opencv的教程,看了好多篇大佬的帖子,参考其中的内容,结合解决在配置过程中遇到的问题(遇到不少的问题),方才有下面的内容。写此贴以记录自己在配置中遇到的问题,给后来者以参考。重点感谢下小伙伴,他完成了大部分的工作,让我这酱油打的非常爽。

首先进行镜像文件的烧写:

  • 树莓派3B
  • 系统使用的是Raspbian Buster with desktop and recommended software 2019年7月10号的版本。下载链接 树莓派镜像下载地址
  • SDFormatter-用以格式化SD卡
  • Win32DiskImager-用以烧写.img镜像
    烧写的具体步骤请自行查找相关文章

**注意:**烧写完成后,打开config.txt,修改其中的一些参数。
修改:

#hdmi_force_hotplug=1
#hdmi_group=1
#hdmi_mode=1
#hdmi_drive=2
#config_hdmi_boost=4

为:

hdmi_force_hotplug=1
hdmi_group=2
hdmi_mode=47
hdmi_drive=2
config_hdmi_boost=4

为何需要修改这些参数。我的理解是,config.txt相当于BIOS,其中存储各种系统配置,包括显示器的一些参数配置。我们一开始就不知道这个事,每次烧写完启动是正常的,第二次启动连屏幕都不带亮的,错误查找到最后才发现hdmi的一些参数全部都处于注释状态,修改后解决此问题。当然,不同的显示器参数是不同的,具体参数请参考这篇文章:树莓派配置文件config.txt详细介绍

后续参考:https://www.cnblogs.com/Pyrokine/p/8921285.html 并且结合自己实验中遇到的错误进行修改,其中还有不足之处如果有发现请尽量指出。

给apt换源

因为国内源的速度远超国外源,后面下载的速度会快很多,不用让你等到天荒地老。
安装vim

sudo apt-get install vim

编辑apt的配置文件(命令行),注意前面加sudo以管理员权限才能修改该文件,下同

sudo vim /etc/apt/sources.list

按i键进入编辑模式,删除(或注释)原链接内容或备份原文件,然后变更为以下国内镜像源链接,然后输入" :wq "回车保存。

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

再输入(命令行)

sudo vim /etc/apt/sources.list.d/raspi.list

变更文件内容为,或者除了清华以外的国内其他镜像源,可自行百度

deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

这个地方又是个坑,一开始跟别人的教程用raspbian/ stretch main 结果是upgrade不通过,我们就忽略了这个问题,继续进行后面的依赖库的安装,导致安装到后来整个桌面系统都整崩溃了(估计是因为里面的依赖库比较复杂很多系统的库在更新安装的时候被我们以管理员权限给卸载了,最终导致系统崩溃)。
问题出在镜像的烧写上面,别的教程应该使用的是 raspbian-stretch.img,版本是stretch版本,所以换源时使用的是stretch。但是官网上最新的是buster版本,所以此处注意修改stretch为buster即可。如果后来版本在变换,一定注意此处的修改。

更新apt(命令行)

sudo apt-get update
sudo apt-get upgrade

给PIP换源

系统已内置PIP3,如果没有安装Python或PIP自行查找安装教程
输入(命令行)

sudo vim /etc/pip.conf

变更文件内容为(本文在这里使用的是阿里云源,也可以使用清华源,豆瓣源等源地址)

[global] 
index-url = http://mirrors.aliyun.com/pypi/simple/
[install] 
trusted-host=mirrors.aliyun.com

扩大TF卡的空间

输入(命令行)

sudo raspi-config

然后选择" Advanced Options “然后选择” Expand Filesystem "然后重启树莓派。如果不做这步操作,后面会出问题,比如卡死。

OPENCV安装

可以直接使用sudo apt-get install python3-opencv得到的opencv的版本是3.2的,并且不需要编译,直接可以用,只是具体需不需要安装相关库我们也没有尝试过,就默认它需要吧,安装具体细节往下看。我们后来安装了opencv4.1.0,这个版本需要编译,步骤比较麻烦。
依赖库

// 安装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 

//安装视频I/O包(注意最后一个包的数字“4”后面是“L(小写的)”)
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

//安装gtk2.0
sudo apt-get install libgtk2.0-dev

//优化函数包
sudo apt-get install libatlas-base-dev gfortran

//Python的开发包
sudo apt-get install python-dev python3-dev

执行到这里就把OpenCV的依赖包全部安装好了。如果你在安装期间遇到了各种依赖库的话,那很有可能是前面说的版本问题,因为我们遇到的就是前面换源的问题,问题解决后,这些库都是顺利的安装完成。
如果你只需要opencv3.x就够用的话,建议使用sudo apt-get install python3-opencv不用编译直接使用,方便快捷(因为估计官方已经编译好了相关的dll文件了,直接调用就可以了)。我们到后来翻看大佬的帖子才注意到这个问题,可惜我们的大把时间。
如果你需要安装更高点的版本的话,请往下看。

下载OpenCV库和Contrib库
强烈建议在其他环境下载然后拷贝过来(建议自己在/home/pi目录下建一个software文件夹然后把这两个文件放进去),当然也可以使用下面的语句,测试过3.4.0的版本,其它的请自行尝试。如果需要其他版本,就修改后面的版本号。

wget https://github.com/Itseez/opencv/archive/4.1.0.zip
wget https://github.com/Itseez/opencv_contrib/archive/4.1.0.zip

解压上面的两个安装包,unzip加压缩文件的名字即可。
解压后在opencv-4.1.0文件夹里创建build文件夹,然后在命令行里面cd到此文件夹

cd /home/pi/software/opencv-4.1.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-4.1.0/modules -D BUILD_EXAMPLES=ON -D WITH_LIBV4L=ON PYTHON3_EXECUTABLE=/usr/bin/python3.7 PYTHON_INCLUDE_DIR=/usr/include/python3.7 PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.7/site-packages/numpy/core/include ..

需要注意修改的地方:

1、需要替换自己的路径,按照自己的解压目录去寻找

OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-4.1.0/modules

2、这几个对应的到文件夹中去寻找,重点是版本号的问题,不要弄错了。

PYTHON3_EXECUTABLE=/usr/bin/python3.7 
PYTHON_INCLUDE_DIR=/usr/include/python3.7 
PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.7m.so 

3、numpy的位置问题,

PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.7/site-packages/numpy/core/include

修改为,注意这是我使用的版本,还得去文件夹找找看有没有。

PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include

在build目录下执行:sudo make

然后就进入愉快的编译环节,需要的时间4个小时左右。
注意:
在 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

PS:
在make的时候,可能会出现 opencv2/xfeatures2d/cuda.hpp no such file or directory #include “opencv2/xfeatures2d/nonfree.hpp” 类似的错误,这是因为找不到你的.hpp文件,咱们就手动添加路径来解决这个问题

问题
1、交换空间不足,导致make到一个节点就卡死了(通常在90%以上的时候),所以建议使用32G的SD卡。树莓派交换空间问题的解决

如果你失败了,又急着需要使用,参考:https://zhuanlan.zhihu.com/p/73999807
大佬替你解决了一切问题。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值