目录

参考博客

调百度人脸识别的API也能达到目的,我这里是基于OpenCV进行人脸识别

OpenCV(Open source Computer Vision Library) 是一个开源的计算机视觉库,支持与计算机视觉和机器学习相关的众多算法,用C++编写

1.安装OpenCV

安装慢就去换源树莓派系统的安装和远程访问_YINZHE__的博客-CSDN博客

看了网上很多教程,都太麻烦,还老是报各种错误,其实用下面一条指令就ok了 

sudo apt-get install python3-opencv

测试是否安装成功(我用的是python3 )

2.安装一些第三方库

apt-get 主要是自动从互联网软件仓库中搜索、安装、升级卸载软件或操作系统 
pip 用来安装来自PyPI(https://www.python.org/)的python所有的依赖包

pip3 install numpy==1.21.4          # NumPy是一个开源的Python科学计算基础库
sudo pip3 install dlib              # dlib是一个包含机器学习算法的C++开源工具包
sudo pip3 install face_recognition  # face_recognition是一个基于python的人脸识别库

3.介绍face_recognition库中的几个函数

face-recognition库的API文档

# 加载当前目录下的名为“test.jpg”的图片,得到ndarray类型的数据image
image = face_recognition.load_image_file("my_picture.jpg")
# 对image进行分析,得到照片中脸的位置信息,因为能获取多张脸的位置,所以返回一个list
face_locations = face_recognition.face_locations(image)
# 输入image,face_locations,得到脸的特征值face_encodings,能同时获取多张脸的特征值,所以返回类型为list
face_encodings = face_recognition.face_encodings(image, face_locations)
# 比较encoding1与encoding2两个特征值,匹配返回True,否则返回False
# tolerance越低,顾名思义,容错率越低
matches = face_recognition.compare_faces(encoding1, encoding2, tolerance=0.38)

4.打开摄像头

我用的是官方的CSI摄像头,确保你的摄像头是开启的

sudo raspi-config

依次选择 "Interfacing Options" -> " Camera",确定后重启树莓派。

vcgencmd get_camera  # 检查摄像头运行情况

5.人脸识别测试

首先用摄像头抓拍一张你的帅照,命名为test.jpg,放在当前目录下

raspistill -v -o test.jpg  # 不同摄像头用的指令不同,默认等待5秒再拍摄

faceRecognition.py 

# coding = utf-8
import face_recognition as fr
import cv2# 创建视频对象,参数为0就打开索引号为0的摄像头,参数为视频路径就打开视频
video_capture = cv2.VideoCapture(0)
# 加载当前路径下面的test.jpg
print('loading...')
image = fr.load_image_file('test.jpg')
# test.jpg只有一张人脸,拿到该人脸的特征值
myFace_encoding = fr.face_encodings(image)[0]while True:print('Capturing image...')# 摄像头抓取一帧照片# ret是布尔值,读取帧成功返回True,文件读到结尾,返回False(如果你读取的是视频,而不是在线拍摄)# frame就是每一帧的图像,一个三维矩阵ret, frame = video_capture.read()# 缩小图片,加快处理速度,fx,fy表示x,y轴方向的缩小系数frame = cv2.resize(frame, (0,0), fx=0.25, fy=0.25)# 将cv2用的BGR颜色转换为face_recognition用的RGB颜色rgb_frame = frame[:, :, ::-1]# 获取这一帧里所有人脸的位置和特征值face_locations = fr.face_locations(rgb_frame)# 计算这一帧中出现的人脸数量print('Found {} faces in image.'.format(len(face_locations)))face_encodings = fr.face_encodings(rgb_frame, face_locations)# 对获取的每张脸进行循环,判断是否和test.jpg中的人脸匹配for face_encoding in face_encodings:match = fr.compare_faces([myFace_encoding], face_encoding)name = '<Unknown Person>'# 检测到test.jpg中的人脸就打印信息if match:name = '张三'print('I see someone named {}!'.format(name))

在当前目录下运行该脚本,脸对准摄像头

6.加快人脸识别

(1)一种思路:增加虚拟内存,在linux中就是增加swap空间 

swap 其实就是把一块磁盘空间或者一个本地文件,当成内存来使用
它包括换出和换入两个过程
换出,就是把进程暂时不用的内存数据存储到磁盘中,并释放这些数据占用的内存
换入,则是在进程再次访问这些内存的时候,把它们从磁盘读到内存中来

① 起初我的实际内存 和虚拟内存如下:

② 修改/etc/dphys-swapfile文件中的CONF_SWAPSIZE

sudo vim /etc/dphys-swapfile

③ 重启树莓派

(2) 另一种思路:我的树莓派是3B+,CPU有四个核,多核并行运算

(3) 适当降低图片分辨率

抓拍test.jpg的时候,可以指定图片分辨率,我这里指定为 640 x 480(默认拍的图片分辨率太高了)

raspistill -v -w 640 -h 480 -o test.jpg

(4) 释放内存

sudo bash -c "echo 3 > /proc/sys/vm/drop_caches"

树莓派 --- 基于OpenCV实现人脸识别相关推荐

  1. 【优秀毕设】基于OpenCV的人脸识别打卡/签到/考勤管理系统(最简基本库开发、可基于树莓派)

    [优秀毕设]基于OpenCV的人脸识别打卡/签到/考勤管理系统(最简基本库开发.可基于树莓派) 该系统利用Harr级联检测和LPBH进行人脸检测和训练.识别 利用Tkinter完成界面搭建 利用Fla ...

  2. 基于OpenCV实现人脸识别--Python

    目录 前言 第一章 OpenCV介绍 第二章 功能描述 2.1 对已有的数据进行检测 2.2 陌生人检测并发出警告 2.3 保存陌生人的视频 2.4 输入图片进行检测 2.5 现场录用信息 第三章 功 ...

  3. 树莓派与OpenCV实现人脸识别(OpenCV安装篇)

    主要看了以下两位博客的文章完成的,也遇到了不少的坑,在这里一一填补说明. 链接: https://blog.csdn.net/weixin_42163073/article/details/10730 ...

  4. 基于OpenCV的人脸识别自助商店(源码&部署视频)

    1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...

  5. Python基于OpenCV的人脸识别自助商店(源码&部署视频)

    1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...

  6. 基于OpenCV的人脸识别系统的pyhon源代码

    本论文主要阐述了基于OpenCV的人脸识别原型系统.基于生物特征识别的身份认证方法有指纹.掌纹.眼睛虹膜.人脸等,其中,由于人脸的稳定性和可见性,人脸识别的研究与应用成为热点,本文针对出租公寓安全管理 ...

  7. 【人工智能毕设之基于opencv的人脸识别智能考勤管理系统

    [人工智能毕设之基于opencv的人脸识别智能考勤管理系统-哔哩哔哩] https://b23.tv/slzvS7e

  8. 【计算机视觉】基于OpenCV的人脸识别

    一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...

  9. Python 毕业设计 - 基于 opencv 的人脸识别上课考勤系统,附源码

    一.简介 这个人脸识别考勤签到系统是基于大佬的人脸识别陌生人报警系统二次开发的. 项目使用Python实现,基于OpenCV框架进行人脸识别和摄像头硬件调用,同时也用OpenCV工具包处理图片.交互界 ...

最新文章

  1. 上拉加载下拉刷新了解下
  2. python torch exp_Python:PyTorch 保存和加载训练过的网络 (八十)
  3. proteus虚拟终端窗口不显示_Linux终端美化工具(ohmyzsh)
  4. gitlab永久设置密码
  5. 使用 C# sdk 连接 高可用的 rabbitmq 镜像集群
  6. 鸿蒙系统中的 JS 开发框架
  7. android论文引用图片,Android自动解析html带图片,实现图文混排
  8. 奔着政府补贴:野蛮生长的机器人产业或跳进去一家死一家
  9. scala中的柯里化函数
  10. linux关闭rpcbind服务,rpcbind服务 关闭
  11. html 背景图片旋转,CSS3只让背景图片旋转180度的实现示例
  12. 字幕/打轴/压制小tip——Aegisub MeGUI 极简操作指南
  13. 瑞幸小鹿茶正面杠上喜茶,茶饮新零售鹿死谁手?
  14. 常见数据收集网站-数学建模(二十二)
  15. 团队口号_激励口号_口号大全分享到:
  16. 《程序是怎么跑起来的》第五章学习笔记
  17. linux tc流量控制(一):classless qdisc
  18. 安全测试涉及的测试对象有哪些?
  19. 英汉小字典java_java 学习案例之英汉字典
  20. 百度智能手环方案开源(含源码,原理图,APP,通信协议等)...

热门文章

  1. ehcache(1)---简介
  2. 联想y7000p怎么连接显示器_暗影精灵6 Air和拯救者Y7000P如何选?看完这篇文章不再纠结...
  3. swagger csrf 404_从0岁用到8岁的404页夫人独家超实用中英文双面闪卡素材包
  4. PHP设计模式之中介者模式(Mediator Pattern)了解下
  5. 贴片铝电解电容安装注意事项
  6. linux无名管道实验代码,Linux 进程间通讯之创建无名管道和读写无名管道
  7. 第8讲+ MOSFET工作原理
  8. 今日突发奇想:如何压缩音频
  9. 【学生成绩管理系统】课程设计
  10. LTE RSRP RSRQ RSSI SINR的定义