树莓派4B安装OpenCV3.4.0人脸检测识别—门禁“环境搭建篇”

  • 前言
  • 一、准备工作
    • PC端软件
  • 二、搭建树莓派环境
    • 拓展TF内存卡
      • Tips:换源(python软件源)
    • 修改树莓默认Python版本
    • 扩展交互空间
  • “进击”的工具包们
    • OpenCV编译工具
    • OpenCV图像包
    • OpenCV视频I/O包
    • OpenCV-gtk2.0
    • 优化函数包
  • 编译Cmake部分(受苦的开始)
    • 设置编译参数
      • 可能遇到的第一个坑
    • 预备,编译
    • 那就来盘点一下各种错误重要
      • 空间不足
      • 缺失文件类型的错误
      • 修改库文件
    • 最后的编译
  • 配置OpenCV到Python环境变量
    • 更新环境变量

前言

在上一篇帖子树莓派4无痛安装OpenCV+python3中,详细介绍 从零开始的树莓派NOOBS系统安装及配置教程,那从这篇文章,我将会详细讲解如何搭建人脸识别门禁所需要的环境,这部分则是是否实现OpenCV人脸检测识别的关键部分,很多人在搭建环境后编译OpenCV遇到很多报错假死爆内存的问题,这里我将详细介绍一步步讲解我们可能会遇到的报错问题,我会尽肯能的将遇到的bug一一列举解决以便后人一条过
自己在萌新时被这些bug反复摩擦

一、准备工作

树莓派4(略有磨损 )
显示器(Mico HDIM)
PS:这里我们强烈建议您准备显示器,在某些突发情况(局域网突然不稳定)会导致VNC断联,假死,无响应等

PC端软件

putty

VNC Viewer(建议使用远程桌面软件方便后期编译查看情况)

FileZila(方便与树莓派传输文件)

二、搭建树莓派环境

拓展TF内存卡

Warning:搭建OpenCV环境,树莓派至少16GTF卡,需要拓展TF的存储空间至整个TF卡空间

查看当前树莓派空间分配

df -h #查看当前树莓派空间分配


继续输入

sudo raspi-config



确定finish保存回车ENTER(树莓派会重新启动)

sudo reboot #也可以手动重启

Tips:如果出现以下情况:

此当前不支持您的分区布局工具,您可能正在使用NOOBS,在这种情况下,您的根文件系统已经扩展。

Tips:换源(python软件源)

之前的文章虽然已经 换源(清华)但是在我们搭建环境过程中为了能更稳定 不白给 我们再次换源,但这次只换Python软件源即可

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple #清华源
pip install pip -U
sudo reboot #重启树莓派


单独换源结束,现在进入正题:
在此我将安装Python3的OpenCV3环境

修改树莓默认Python版本

打开我们的终端输入

python


我发现默认版本是Python2.7.16(输入Ctrl + Z退出python环境)
继续输入

python3


python3版本为3.7.3**,所以修改默认版本(python)为python3.7
输入sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
Keep goingsudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

在此输入python发现修改默认版本成功

扩展交互空间

安装OpenCV3编译部分是最头痛的,Up主自己在编译中很多次都会卡在40%左右假死挂起然后报错,部分报错原因可能是由于交互空间不足导致的,在之前树莓派3B上尝试了很多次都假死挂起(内存太小),在此我们先增大Swap交互空间
在终端中输入

free -m #查看当前内存


继续输入

sudo nano /etc/dphys-swapfile

CONF_SWAPSIZE = 改为1024

Ctrl + OEnterCtrl + X保存退出
继续输入

sudo /etc/init.d/dphys-swapfile restart


OK增大Swap交互空间成功
本次使用的树莓派4(2GB)方便起见我改数值为1024+512,大家根据自身使用配置情况可以进一步修改

“进击”的工具包们

你需要安装下载以下的工具包们:libjpeg-dev libatlas-base-dev libjpeg-dev libtiff5-dev libpng12-dev libqtgui4 libqt4-test libjasper-dev
不着急,一个个来

OpenCV编译工具

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

OpenCV图像包

sudo apt-get install libtiff5-dev #tif格式图像工具包
sudo apt-get install libjasper-dev #JPEG-2000图像工具包
sudo apt-get install libjpeg8-dev #jpeg格式图像工具包
sudo apt-get install libpng12-dev #png图像工具包

OpenCV视频I/O包

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

OpenCV-gtk2.0

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

优化函数包

sudo apt-get install libatlas-base-dev gfortran #安装优化函数包

以上依赖环境包安装好以后就开始准备配置Cmake参数
本次安装OpenCV3.4.0版,是从GitHub上Git clone的方式下载

编译Cmake部分(受苦的开始)

新建目录从 Github 克隆 OpenCV 和 OpenCV contrib 库

mkdir ~/opencv_build #在opencv里新建build文件夹
cd ~/opencv_build

新建build的文件夹存放cmake编译时产生的临时数据

之后git clone

wget -O opencv-4.0.0.zip https://github.com/Itseez/opencv/archive/4.0.0.zip
#下载opencv 4.0.0包

这里下载很慢很慢,毕竟是国外网站,而且下载一般报错很正常(换源没用 )耐心等待http回应

个人建议会点魔法的尽量使用魔法

最后安装下载完是这样子

接着需要下载opencv-contrib包文件

wget -O opencv_contrib-4.0.0.zip https://github.com/Itseez/opencv_contrib/archive/4.0.0.zip #下载opencv包


最后下载完成…
这里网络不好的小伙伴我提供一个完整的资源下载(包含opencv4.0.0、opencv_contrib-4.0.0)OpenCV4.0.0安装环境

unzip opencv-4.0.0.zip
unzip opencv_contrib-4.0.0.zip
#解压文件

设置编译参数

在文件解压完毕后,保证文件路径没有问题:向我这样的结构:/opencv4.0.0/build/以下的操作均需要在build的这个文件夹进行:
接下来准备设置编译参数,编译的语句安全起见要加 sudo

sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \-D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv_contrib-4.0.0/modules \#根据自己contrib中modules文件夹的地址进行配置-D INSTALL_PYTHON_EXAMPLES=ON \-D INSTALL_CXX_EXAMPLES=ON \-D OPENCV_GENERATE_PKGCONFIG=ON \-D BUILD_EXAMPLES=ON ..

这里是编译的代码的详细

CMAKE_BUILD_TYPE #编译方式
CMAKE_INSTALL_PREFIX #安装目录
OPENCV_EXTRA_MODULES_PATH #加载额外模块
INSTALL_PYTHON_EXAMPLES #安装官方python例程
BUILD_EXAMPLES #编译例程
OPENCV_GENERATE_PKGCONFIG : #配置pkg-config , OpenCV 4 默认下生成”opencv4.pc“
-D INSTALL_C_EXAMPLES=ON   #如果需要C语言的编程案例在末尾加上

开始编译:

设置编译参数完成看到结尾像这样,没有报错且都为done的时候,编译部分结束

到这里,在成功编译的情况下建议把编译的文件夹进行一个备份:(/build

cd ..
cp -r build ./buildres  #在当前目录备份build为buildres文件夹

可能遇到的第一个坑

但是吧…在这个步骤中,可能会出现一个错误:

这种情况是文件编译出错,我自己第一次编译也是一直失败
可能出现的原因:
1.下载的opencv以及opencv-contrib文件不完整,尤其是git clone下的文件,可能文件丢失
建议重新下载
2.在编译的时候,没有添加“sudo”,在Linux中,sudo是高权限的指令
尝试添加sudo,并且删除原编译的build文件夹中的所有文件后重新编译

预备,编译



一次编译到这里是真的NB!!!(反正我安装了差不多4次的opencv,没有一次能一次顺利的编译完成)

正常来说,脸白一点,一次完整的编译成功!!!雀食欧皇
(一次编译成功的重要原因是你的opencv和opencv-contrib文件很完整,也就是你连接GitHub的网速好,或者下载的哪个文件完整度较高)
不然…基本就会在编译中,会报错缺失文件

那就来盘点一下各种错误重要

空间不足

换32GB吧,16GB可能少点的话编译雀食很危险,32GB最保险
**重要提示:**内存卡一定要看看是不是已经扩充到整个磁盘:


这是一张32GB的卡,在第一次编译因为没有扩充到整个磁盘,导致空间不足
扩充磁盘的方法:文章开头有提到

缺失文件类型的错误

这个报错是很常见的了,原因前文也提到了,就是opencv和opencv-contrib两个文件不完整
具体表现在:
缺失以下的文件:

那就缺什么下载什么,这里提供以上文件的完整包——下载

和上图差不多的报错,将缺失的文件放到
opencv_contrib/modules/xfeatures2d/src/(记得是opencv-contrib这个文件夹里)

修改库文件

这是我心态崩的一次安装opencv了
在编译到99%报错了直接原地爆炸

注意看这里:

意思是我们缺失这个文件“test_detectors_regression.impl.hpp"
解决这个问题首先要看看我们是否有这个文件
在终端中输入

find -name test_detectors_regression.impl.hpp

或者去这个路径

/Users/bigboss/Documents/CodeHouse/OpenCV4.0.0/OpenCV4.0.0/opencv-4.0.0/modules/features2d/test/test_descriptors_regression.impl.hpp

看看这个文件是否存在
若有这个文件则打开opencv/CmakeLists.txt文件中,插入

include_directories("modules")

至于插入的位置,位置在构建前就行,举例

最后的编译

执行

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



通过!!!
接着执行

sudo make install


finally 终于成功安装了!!!!

配置OpenCV到Python环境变量

在整个安装完OpenCV环境下,打开终端进行测试
输入 : Python 进入Python的运行环境
输入import cv2 如果没有错误的话说明可以正常运行opencv的环境了,提示找不到库时候,说明需要将opencv的环境配置到Python中

退出Python环境,在终端输入

cd /usr/local/python/cv2

进入到Python cv2的文件下,继续输入ls 查看当前的文件夹下的文件

有一个文件夹是Python-3.7 ,进入这个文件夹 /usr/local/python/cv2/python-3.7(根据自己的文件版本进行调整)

这个文件夹里面有一个文件 cv2.cpython-37m-arm-linux-gnueabihf.so将这个文件复制到这个路径下**/usr/local/lib/python3.7/dist-packages**

sudo cp cv2.cpython-37m-arm-linux-gnueabihf.so /usr/local/lib/python3.7/dist-packages

更新环境变量

sudo ldconfig

打开bash.bashrc配置文件

sudo nano /etc/bash.bashrc

进去后,在末尾加入:

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


重启树莓派sudo reboot now 结束!!!
最后检测一下

测试代码

import cv2
import numpy as npimg = cv2.imread(“你测试的图片路径”)
cv2.namedWindows(“TestImage”)
cv2.imshow("TestImage",img)
cv2.waitKey(0)
cv2.destoryAllWindow()

测试成功!!!

感谢观看到现在,这篇文章是截稿一年前写的,当时自己对OpenCV一无所知,树莓派Linux系统的入门小白,现在也不过学到一点皮毛,当时也是折腾了整整一星期的时间吧,中间踩了太多的坑,一度想放弃,当时最后还是坚持下来,完整的安装下来整个OpenCV,因为当时遇到的问题没有及时总结,导致自己的文章写了一半就断了,现在我是找了一个新的储存卡,重头开始,一步步再来一遍,希望自己这一遍的安装,对你有帮助,感谢你看到这里,祝你好运!!!

树莓派4B爽上流安装python3的OpenCV(人脸检测识别—门禁“环境搭建篇”)相关推荐

  1. 树莓派4B系统一键安装opencv,再也不要用编译安装啦!(支持buster、bullseye)

    树莓派4B系统一键安装opencv,再也不要用编译安装啦!(支持buster.bullseye 准备一下 开始一键安装 测试一下 温馨提示 OVER 准备一下 首先第一步,需要配置好国内镜像软件源(原 ...

  2. confluence创建页面加载缓慢_树莓派4B使用docker安装confluence

    说明 confluence是一个专业的企业知识管理与协同软件,可以用于构建企业wiki.通过它可以实现团队成员之间的协作和知识共享.现在大多数公司都会部署一套confluence,用作内部wiki.另 ...

  3. 树莓派4B无显示器安装最新的Debian11和配置相关软件的教程(一)

    树莓派4B无显示器安装最新的Debian11和配置相关软件的教程(一) 写在前面 本文主要介绍树莓派的安装流程和一些好用的软件如何安装配置,如一些好用的软件等,比较适合新手操作,讲的自认为很细.如果有 ...

  4. 树莓派4b无显示屏安装系统

    树莓派4b无显示屏安装系统 欢迎使用Markdown辑器 1.准备一张micro SD卡 去树莓派官网,找烧写程序的方法 先看官网上40秒的视频,再下载windows版,根据视频把操作系统写入SD卡 ...

  5. python人脸识别门禁系统毕设_树莓派人脸识别门禁系统代码以及代码分析——opencv拍照调用FACE++处理...

    树莓派人脸识别门禁系统的总体设计 硬件包括:树莓派3B.电源模块.转5V降压模块.触摸感应传感器模块.声光报警模块和驱动模块. 由此设计出的人脸识别门禁系统总体结构框图如下: 总体结构框图 程序运行时 ...

  6. 新手树莓派3B——人脸识别门禁管理系统

    文章目录 前言 一.怎么用树莓派设计人脸识别门禁系统? 二.树莓派系统的安装 三.远程连接 四.人脸识别 总结 前言 树莓派,自问世以来,其"麻雀虽小,五脏俱全"的微型电脑特征让无 ...

  7. 树莓派双目人脸识别门禁(在线+离线模式)+刷卡进出

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.安装配置 二.代码文件(离线模式的) 1.树莓派代码 2.arduino代码 前言 我做好的成品运行视频见b站:树 ...

  8. 【物联网树莓派毕设04】Arduino实现电梯及人脸识别门禁

    一.前言 这次是利用Arduino实现毕设中的电梯联动及门禁的部分,因为之前大二的时候用过Arduino做过课设,比较熟悉,其中一个项目就是实现模拟电梯运行.毕设的电梯部分,功能不用很复杂,只需要实现 ...

  9. 树莓派3B+、opencv3+PyQt5实现人脸识别门禁系统

    前言 总结.干货.知识点.注意实现.无个人背景(别人不会关心,捂脸) 效果展示 没点效果,没兴趣往下看了吧(反正我是这样) 下面是两个界面:主页和人脸检测界面,主页可以密码锁.以及其他操作(自己按需) ...

最新文章

  1. 最新开源LiDAR数据集LSOOD:四种常见的室外物体分类
  2. 如果不是为了面试,AI工程师刷题有用吗?
  3. 这个医疗AI准确率突破天际,招来了铺天盖地的质疑
  4. ★☆★ lc 847. Shortest Path Visiting All Nodes
  5. CodeForces - 1514D Cut and Stick(线段树/随机数)
  6. 学生电脑哪个牌子好_家用医用酒精棉球哪个牌子好,酒精棉片哪个牌子好
  7. 三点滑动平均法怎么计算的_孔径千分尺怎么用,能看懂吗?
  8. 运行时动态的开关 Spring Security
  9. 量化交易入门读物列表
  10. 使用批处理设置、启动和停止服务
  11. python是什么语言-python是一门什么样的语言?
  12. 2021年计算机网络常见面试题
  13. 关于多元正态分布向量表示的Notation问题
  14. Oracle21c 官方文档:数据库概述之数据库体系架构
  15. 以太坊geth节点同步亲测经历
  16. 前端三刺客---CSS
  17. java 如何初始化数组_java中初始化数组的三种方式分别是什么
  18. Goland环境下同一个package下出现undefined
  19. 51单片机 YF-S201水流量检测传感器的使用
  20. 2021年山东科技大学C++MFC飞机大战

热门文章

  1. 苹果刷机未知错误75_苹果iPhone6用iTunes刷机报错未知错误53解决方法
  2. 什么是网关,及其作用 (转载)
  3. 洛谷 P2071 座位安排 seat.cpp/c/pas
  4. 用于机器学习的 NumPy(ML)
  5. 适配器模式 : 农村小伙娶乌克兰美女语言不通 翻译软件立功
  6. initramfs概述
  7. windows下 编写的Qt程序连接远程MySQL数据库
  8. 80端口跟8080端口有什么具体区别?
  9. CTP开发——初始化
  10. python爬取并分析淘宝商品信息