前言:最近买了一个CSI接口的摄像头,最准用树莓派做人脸识别项目。树莓派上本身已经安装了python2、python3,最开始通过sudo apt-get install python3-opencv命令安装了opencv和numpy库,后来在做人脸识别的过程后发现缺少了contrib库,但是一直安装contrib库失败,最后只能把opencv卸载了,通过编译源码方式重装。其中遇到了各种问题,缺少文件、树莓派内存不足,ssh连接中断。

安装python3上允许的opencv

1、安装numpy库

sudo pip3 install numpy

2、安装opencv所需要的库

sudo apt-get install build-essential git cmake pkg-config -y
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y

3、下载opencv和opencv_contrib到用户目录,如果使用git下载时网速过慢,可以在浏览器中直接下载后拷贝到用户目录下

git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

4、解压压缩文件,并将opencv_contrib库拷贝到opencv下

unzip -O opencv opencv-master.zip
unzip -O opencv_contrib opencv_contrib-master.zip

5、进入到opencv目录下,新建一个build文件夹

cd opencv
mkdir build

6、配置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/opencv/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..

在这一步的过程中,遇到了缺少文件的错误情况,错误如下:bootstdesc_bgm.i文件下载超时

解决办法:将缺少的文件从网上下载下来,然后拷贝到/home/pi/opencv/opencv_contrib/modules/xfeatures2d/src目录下

文件下载地址参考:https://github.com/opencv/opencv_contrib/issues/1301

缺少的文件一共是:

然后重新运行cmake命令

7、编译opencv源码

sudo make

在程序运行两个小时后,编译报错,提示fatal error: bootstdesc_lbgm.i没有那个文件或目录

解决方法:将/home/pi/opencv/modules/features2d/test目录下的缺少的文件拷贝到/home/pi/opencv/opencv_contrib/modules/xfeatures2d/test目录下,继续运行make命令,编译会从上次停止的地方继续运行。

在程序编译进行到百分之73%时报错,提示缺少文件

解决办法为:和上面的操作一样,先拷贝缺少的文件,然后在/home/pi/opencv/opencv_contrib/modules/xfeature2d/test目录下编辑test_features2d.cpp文件,修改内容如下

后面还会出现类似的错误,解决方法类似。

编译到96%时树莓派一直卡住了,查看系统内存只有30M左右的剩余了,于是将SWAP分区设置为2048才编译成功,整个编译时间大概5个小时。

8、安装opencv

sudo  make install
sudo ldconfig

9、测试opencv是否安装正确

  

树莓派3b安装opencv的更多相关文章

  1. 利用树莓派来安装opencv从而来调动摄像头工作(没有坑,超超自己试过)

    超超最近参加了学校里一位特别厉害的老师讲的课(两天,我就从一个小白然后了解了树莓派以及Arduino这些我之前都没有了解过的东西,由于结课的需要,我们需要自己设计一个创意以及完成作品)所以才有了这篇文 ...

  2. 树莓派3B安装LEDE

    本来想安装openwrt的,但是op官方没有支持pi3,甚至op都不怎么发新版了,仅LEDE分支有缓慢的更新..离题了,之前给pi3装过LEDE,体验不是很好.今天到openwrt官网看了下,发现之前 ...

  3. 树莓派3b安装Nginx和php7和百度语音合成模块

    1.安装sox系统mp3音频播放模块(项目需要) sudo apt-get install lame sudo apt-get install sox sudo apt-get install lib ...

  4. 树莓派3B安装OpenWrt打造超级路由器

    网上有很多树莓派安装OpenWrt的教程,我这里写一下个人安装体验以及踩过的坑

  5. 树莓派3B+安装64位ubuntu系统和docker工具

    想在树莓派3B上安装一些64位应用(例如64位JDK),因此首先要安装64位的操作系统,今天咱们就一起来实战: 原文地址:https://blog.csdn.net/boling_cavalry/ar ...

  6. 树莓派3B安装远程

    步骤1:树莓派3安装 RDP SERVER 及VNC SERVER sudo apt-get install -y tightvncserver sudo vncserver 最后才知道一定要加上VN ...

  7. 树莓派3b安装Windows10 Arm

    感谢老外的这个项目:https://github.com/WOA-Project/WOA-Deployer-Rpi 还有这个:https://uupdump.ml/ 首先从https://uupdum ...

  8. 树莓派3B+安装&卸载mysql

    需求 在树莓派上 安装Mysql 服务,并开启远程访问 步骤 安装 mysql server 1 $ sudo apt-get install mysql-server 我以为中间会让我提示输入 数据 ...

  9. 树莓派3B 安装微雪LCD5inch显示器(包含软键盘)

    树莓派单独使用时,往往需要触摸屏和软键盘用以方便操作,微雪LCD显示器就能较好的实现这个功能, 正好实验室又买入了一个3B的板子和一个5inch的显示器,便对着官方的安装手册,亲自安装了一次. 一:材 ...

随机推荐

  1. WordtoPdfUtil word转pdf

    jar: <dependency> <groupId>com.jacob</groupId> <artifactId>jacob</artifac ...

  2. bat/cmd批处理程序设计教程

    序言 这是一篇技术教程,我真心诚意会用很简单的文字表达清楚自己的意思,只要你识字就能看懂,就能学到知识.我写这篇教程的目的,是让每一个看过这些文字的朋友记住一句话:如果爱可以让事情变的更简单,那么就让 ...

  3. nginx+tomcat报400的坑

    nginx+tomcat的网页,在手机上通过浏览器可以正常访问,但是在自己的app的webview中访问就报400.查了访问日志,每次app中访问该页面,tomcat中就出现一个GET null的申请 ...

  4. php异常处理小总结

    2019年8月23日10:56:31 php很多开发不习惯使用异常处理,因为web开发,重在于快速开发,易用性,高性能,不强调程序健壮性 php的异常使用其实不是太完善,易用性也差点,当然这个对比其他 ...

  5. mysql 导入txt数据到数据表【原创】

    1.如何将数据表导入到mysql的表中,可以使用:load data infile ... into table  ... 示例: load data infile 'e:\datainfo.txt' ...

  6. POJ 3624 Charm Bracelet(01背包模板题)

    题目链接 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 52318   Accepted: 21912 Descriptio ...

  7. nginx配置优化提高并发量

    1 nginx配置优化提高并发量 worker_processes 2; 这个按照CPU的核数来决定 2 worker_connections 65535; 这个一般设置65535即可 每个进程允许的 ...

  8. Error: Error occured while starting App. Original error: Activity used to start app doesn't exist or cannot be launched! Make sure it exists and is a launchable activity

    Error: Error occured while starting App. Original error: Activity used to start app doesn't exist or ...

  9. jiaba

  10. Three.js构造一个简单的房间

    主要研究three.js在3D场景中基本使用:画一个简单的房子.房子上画门和玻璃.房间内放一个床.定义鼠标事件可以移动场景.动画的使用等. 1.Three.js画的一个简单的房子,模拟地板以及四堵墙 ...