人脸识别门禁系统

news/2025/2/21 11:03:04/

利用树莓派开发板以及现有的摄像头,通过调用百度智能云的API接口进行人脸识别对比完成了整个过程实现简易的人脸识别门禁系统,并通过server酱平台,向相应的URL发送一个POST或者GET请求完成了对开门者信息推送到主人微信上的一个功能。通过多次的测试与后台上的数据分析,本设计识别速度快、准确率高,对于未来人脸识别门禁系统的实现有一定的意义。

1.百度智能云

百度智能云是百度旗下面向企业、开发者和政府机构的智能云计算服务商,致力于为各行业提供以ABC(人工智能、大数据、云计算)技术为一体的平台服务。对于开发者而言,灵活利用其提供的大量模块化接口,可快速完成相关的开发,大大缩短开发周期。

人脸识别门禁系统也正借用了百度智能云所提供的人脸识别的开发平台,通过调用其API接口,树莓派将通过摄像头录入的人脸传输到百度智能云到提前录入的人脸库中搜索,若有相对应的人脸则开门,否则处于关门的状态。

通过申请好的百度账号登入百度智能云,并在百度智能云中创建好我们个人所需的应用——人脸识别。如下图即为我为人脸识别所创建的一个应用——门禁识别。

 下载SDK

创建完毕后,下载SDK文档,因为是在树莓派中运行,所以选中python HTTP SDK下载到本地,并在后续中导入到树莓派中,后续需要使用。

 查看应用详情,记录下AppID、API Key和Secret Key,在后面的代码中会用到这些参数,并通过这些参数将树莓派与百度智能云建立有效连接,成果进入到人脸库中搜索人脸

 在人脸库管理中新建用户组,再从用户组中新建人脸id和照片。在本次实验室为提高准确率上传了本人三张照片。

添加上去就行了,这就不放图了。。。

配置树莓派 

将上一小节中提到的SDK文件,传输到树莓派的文件目录下,然后cd进入该目录,安装pip以及setuptools,安装过程此处忽略。

在安装好pip以及setuptools之后,cd到传输至树莓派中的SDK文件下,安装baidu-aip,执行以下命令即可:

pip install baidu-aippython setup.py install

至此树莓派的环境配置完成。

设计拍照

本次设计拍照功能的实现使用的是python中的picamera模块来控制操作树莓派的摄像头,它为 Raspberry Pi 的相机模块提供纯 Python 接口。使用capture()方法捕获图像,使用start_recording() 方法开始录制视频,或使用start_preview()方法开始实时显示摄像机的输入,使用camera.resolution = (a, b)设置图像大小的尺寸。

设计的拍照代码如下:

 

获取acess_tokenAPI

用了一个软件(post),按照下面输进去就可以了

 grant_type:必须参数,固定为client_credentials;client_id:必须参数,应用的API Key(前面提到的);client_secret:必须参数,应用的Secret Key。通过POST输入上述参数即可得到我们所需要的access_token,将得到的access_token带入到下图代码中即可得到我们所需的API。

向服务器申请access_token,并拼接至request_url,request_url即为申请API接口时得到的人脸对比请求地址

人脸识别测试

以上导入的照片依然是本人的照片,由以上结果可以看出识别率比较高测试结果比较可信。

介绍到这就差不多了,下面就是还有一个微信推送

推荐一个特别好用的平台,Sever酱,

Sever酱对于每一个用户都设置了一个SCKEY码,该码是独一无二的每一个用户有且仅有一个,发送消息也比较简单只需要向以下URL发一个GET或者POST请求,它主要接收两个参数,text(发送内容)desp(标题),比如要向我自己发送一个消息:

https://sc.ftqq.com/SCU178916Ta7fe4a659a31bb6766fd4fd5bfbc867460cdc24f25a69.send?text=你好呀~

所以我们想使用python编译发送消息,只需要接用urllib.request.urlopen()模块即可。其主要是用于打开一个远程的url连接,并且向这个连接发出请求,获取响应结果,返回的结果是一个http响应对象,这个响应对象中记录了本次http访问的响应头和响应体。

测试结果 

from aip import AipFace
from picamera import PiCamera
import urllib.request
import RPi.GPIO as GPIO
import base64
import time# 百度人脸识别API账号信息
APP_ID = '替换成你的'
API_KEY = '替换成你的'
SECRET_KEY = '替换成你的'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)  # 创建一个客户端用以访问百度云
# 图像编码方式
IMAGE_TYPE = 'BASE64'
camera = PiCamera()  # 定义一个摄像头对象
# 用户组
GROUP = 'yusheng01'# 照相函数
def getimage():camera.resolution = (1024, 768)  # 摄像界面为1024*768camera.start_preview()  # 开始摄像time.sleep(2)camera.capture('faceimage.jpg')  # 拍照并保存time.sleep(2)# 对图片的格式进行转换
def transimage():f = open('faceimage.jpg', 'rb')img = base64.b64encode(f.read())return img# 上传到百度api进行人脸检测
def go_api(image):result = client.search(str(image, 'utf-8'), IMAGE_TYPE, GROUP);  # 在百度云人脸库中寻找有没有匹配的人脸if result['error_msg'] == 'SUCCESS':  # 如果成功了name = result['result']['user_list'][0]['user_id']  # 获取名字score = result['result']['user_list'][0]['score']  # 获取相似度if score > 80:  # 如果相似度大于80if name == 'yusheng_02':print("欢迎%s !" % name)time.sleep(3)if name == 'xiaoming':print("欢迎%s !" % name)time.sleep(3)if name == "xiaoyu":print("欢迎%s !" % name)else:print("对不起,我不认识你!")name = 'Unknow'return 0curren_time = time.asctime(time.localtime(time.time()))  # 获取当前时间# 将人员出入的记录保存到Log.txt中f = open('Log.txt', 'a')f.write("Person: " + name + "     " + "Time:" + str(curren_time) + '\n')f.close()return 1if result['error_msg'] == 'pic not has face':print('检测不到人脸')time.sleep(2)return 0else:print(result['error_code'] + ' ' + result['error_code'])return 0# 主函数
if __name__ == '__main__':while True:print('准备')if True:getimage()  # 拍照img = transimage()  # 转换照片格式res = go_api(img)  # 将转换了格式的图片上传到百度云if (res == 1):  # 是人脸库中的人print("开门")else:print("关门")print('稍等三秒进入下一个')time.sleep(3)

 

运行成功了!✌ 


http://www.ppmy.cn/news/246115.html

相关文章

门禁系统

1.什么是门禁系统? 门禁系统顾名思义就是对出入口通道进行管制的系统,它是在传统的门锁基础上发展而来。常见的门禁系统包括:密码识别门禁系统、刷卡识别门禁系统、生物识别门禁系统等。 2.门禁系统的分类 密码识别门禁系统 通过检验输入密码是否正确…

智能门禁系统解决方案

智能门禁系统解决方案 案例介绍 基于ibeacon、蓝牙、APP等技术,为工业园区、商业楼宇、住宅小区等各种物业类型自主开发的门禁控制云平台管理系统。实现了从感知层到接口层到应用层的端到端智能门禁解决方案。 拓扑结构图 应用中移物联网OneNET平台,保…

分布式事务 3PC

tip:作为程序员一定学习编程之道,一定要对代码的编写有追求,不能实现就完事了。我们应该让自己写的代码更加优雅,即使这会费时费力。 文章目录 一、简介二、运行流程三、 3PC协议相比于2PC协议四、它应用的中间件五、它应用的业务…

[BigGAN] Large Scale GAN Training for High Fidelity Natural Image Synthesis

1、目的 在大型数据集上训练class-conditional GAN,并探索相关的trick 2、贡献 1)数据集的扩大使得GAN的表现也随之提升。文章的网络参数量是之前工作的2~4倍,batch size是之前的8倍。文章分别从两方面对performance进行提升:sca…

Linux环境基础开发工具

LInux环境基础开发工具 我们在Linux学完基础的指令之后,诸如ll,cd,我们需要在linux上进行配置文件(下载),或者是进行c/c的编程,异或是git的使用,来保管在linux系统下的文件&#xf…

广域网技术

广域网互连一般采用在网络层进行协议转换的方法实现。时延网关,更确切的说是路由器。 无连接的网际互连: 在网际层提供路由信息的是路由表,每个站或者路由器中都有一个网际路由表,表的每一行说明一个目标站对应的路由器地址。 路…

现在常用的处理器都有几个核

RMI公司的Superscalar XLP处理器(8核): Cavium Networks 的 Octeon处理器(CN58xx有16个核): 其实Octeon 2 有32个核的: 著名的通信软件提供商,比如6Wind, windriver, 和Continuous Computing这些公司,都支持RMI XLP 或…

HTML/樱花爱心网页/

HTML/樱花爱心网页/ 代码如下&#xff1a; <!DOCTYPE html> <html><head><title></title><script src"js/jquery.min.js"></script></head><style>* {padding: 0;margin: 0;}html,body {height: 100%;paddi…