利用百度人脸识别API和pyqt5实现基于人脸识别的可视化课堂签到管理系统

利用百度人脸识别API和pyqt5实现基于人脸识别的可视化课堂签到管理系统

一、项目介绍

基于人脸识别的课堂签到管理系统

二、概要设计

工程项目:基于人脸识别的课堂签到管理系统
分为:三个阶段
1.定义阶段
可行性分析
技术可行性
成本可行性:自底向上估价
开发评估成本
开发的时间周期,开发的人力
10天 3-4人
收益评估成本
需求分析:
a、摄像头进行人脸检测
b、人脸比对判断
c、人脸库
d、人脸库添加、删除
e、数据库保存
f、导出签到数据
2.开发阶段
概要设计:规定接口,模块功能的组成
详细设计:对每一个功能的实现流程进行设计
实现:对详细设计的功能进行代码实现
测试 :测试功能的正确性,稳定性
3.运行维护阶段
交付客户,上线运营
维护软件正常工作运行状态,进行版本更新
采用pyqt5作为界面开发
1、设计界面程序
pyqt5designer.exe打开ui界面设计工具,进行界面设计

a、创建项目,选择对应的虚拟解释环境
b、使用qt的工具,创建一个界面
在下方找到terminal—》pyqt5deisgner.exe
qt的界面设计
c、把界面UI文件添加到项目中,作为项目文件
d、把ui界面转换成python文件的界面程序
python只会解释.py文件,在项目中就不认识.ui
需要把.ui转换成.py
pyuic5 源UI文件.ui -o 目标文件.py
e、创建一个新的类,继承ui类与基础界面类
在新的类中既有设计的ui类中的界面内容,也有基础界面类(窗口类)显示等操作

三、实现效果

能够实现管理学生人脸签到的系统
分析:

1、摄像头进行人脸检测

关键代码:

def detect_face(self, base64_image):
        # 发送请求的地址
        request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
        # 请求参数是一个字典,在字典中存储了,百度AI要识别的图片信息,要识别的属性内容
        params = {
   "image": base64_image,  # 图片信息字符串
                  "image_type": "BASE64",  # 图片信息的格式
                  "face_field": "gender,age,beauty,expression,face_shape,glasses,emotion,mask",  # 请求识别人脸的属性,各个属性在字符串中用','逗号隔开
                  "max_face_num": 10,
                  }
        # 访问令牌
        access_token = self.access_token
        # 把请求地址和访问令牌组成可用的网络请求地址
        request_url = request_url + "?access_token=" + access_token
        # 参数,设置请求的格式体
        headers = {
   'content-type': 'application/json'}
        # 发送网络post请求,请求百度AI进行人脸检测,返回检测结果
        # 发送网络请求,就会等待一段时间,程序就在这里阻塞执行
        response = requests.post(request_url, data=params, headers=headers)
        if response:
            data = response.json()
            if data['error_code'] != 0:
                self.transmit_data.emit(data)
                self.search_data.emit(data['error_msg'])
                return
            if data['result']['face_num'] > 0:
                self.transmit_data.emit(dict(data))
                self.face_search()

实现效果:
在这里插入图片描述

通过百度API返回人脸的一些信息

2、人脸识别判断

关键代码:

def face_search(self):
list = self.getlist()
grouplist = list[‘result’][‘group_id_list’]
request_url = “https://aip.baidubce.com/rest/2.0/face/v3/search”
params = {
“image”: self.base64_image,
“image_type”: “BASE64”,
“group_id_list”: “class3” # 从哪些组中进行人脸识别
}
access_token = self.access_token
request_url = request_url + “?access_token=” + access_token
headers = {‘content-type’: ‘application/json’}
response = requests.post(request_url, data=params, headers=headers)
if response:
data = response.json()
if data[‘error_code’] == 0:
if data[‘result’][‘user_list’][0][‘score’] > 90:

            # -------显示到窗口------- #
            # 存储要保存的签到数据,方便进行显示
            del(data['result']['user_list'][0]['score'])
            datetime = QDateTime.currentDateTime()
            datetime = datetime.toString()
            data['result']['user_list'][0]['datetime'] = datetime
            key = data['result']['user_list'][0]['group_id'] + data['result']['user_list'][0]['user_id']
            if key not in self.sign_list.keys():
                self.sign_list[key] = data['result']['user_list'][0]
                print(self.sign_list[key])
                group1 = self.sign_list[key]['group_id']
                user_id = self.sign_list[key]['user_id']
                name = self.sign_list[key]['user_info'][5:9]
                time = self.sign_list[key]['datetime']
                self.insert_stu(user_id, name, group1, time)
            # ---------------------- #

            self.search_data.emit("签到成功\n学生信息:\n"+data['result']['user_list'][0]['user_info'])
        else:
            self.search_data.emit("未注册人脸信息")

实现效果:
在这里插入图片描述

通过调用百度人脸识别的API搜索比对人脸库里已经录入的人脸信息,根据匹配程度返回识别结果,成功返回为签到成功并输出人脸信息

3、人脸库管理

关键代码:

def add_group(self):
        # 打开对话框,进行输出用户组
        grou
  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值