基于人脸识别的课堂签到管理系统(三)---实时时间显示以及百度AI人脸识别

一.前言概述

时间功能
1、获取系统时间
2、把获取的系统时间日期添加到对应的时间/日期编辑器中
3、多次重复获取系统时间,添加
定时器,设置定时时间,产生信号,关联槽函数
在槽函数中去完成获取系统时间/日期功能
定时器当到达定时时间后才会产生信号
在创建窗口时就应该有这个定时器,启动定时器产生信号,关联设置时间日期的槽函数

人脸识别

能够把摄像头采集的画面进行人脸识别(识别人脸,且能判断到是谁)
进行人脸分析识别判断,实现方式有很多种:采用成熟的现成的技术方式或者我们自己从0开始设计一个识别模型进行识别判断
厂商现成的技术方案–使用百度的人脸识别
需要使用百度的相关技术方案(实现)–不会提供实现方式,只会提供使用的方式
在对应网站http://ai.baidu.com/找到人脸识别使用方法,使用提供的技术文档进行完成
离线方式-----离线sdk
在线方式-----在线api
在线识别方式:
人脸检测:对人脸进行分析检测
人脸对比:比对两个人脸画面是否为同一个人,多个人脸信息进行比对判断(确定是否为同一个人)
人脸搜索:在人脸库中搜索是否存在相识人脸(确认人脸库中是否存在同一个人)
人脸库管理:管理人脸信息(存储多人人脸信息)
使用在线识别的功能完成人脸识别:
1、摄像头采集画面
2、实现人脸检测:在线检测-----让百度AI进行检测
实现方式:
发送请求(向百度AI发送人脸检测请求,让百度AI去完成人脸检测,返回检测结果)
发送请求不是任意的网络请求能够接受,必须有百度提供的访问令牌(access_token)

		a、在发送请求前必须先有access_token,获取access_token:需要注册人脸识别API
			client_id
			client_secret决定是否有访问权限
			需要注册API获取id与secret,用百度账号进行注册
			注册后建立人脸识别应用(才能进行使用),才会创建id与secret
			id:应用的API Key -------  kSD6zWfxpki2AKWtysCUe0nS
			secret:应用的Secret Key -------uNXjdRa7SbYwt0EgBdRwsmQYX6VADGx8
			在使用requests.get(host)发送请求后,最终得到字典数据
			从字典中取出键为access_token的值,得到accesstoken值
		b、发送请求,通过网络请求方式完成让百度AI进行人脸检测
			让百度AI检测一张画面(图片)是否存在人脸,以及人脸的一些属性
			通过requests.post()函数完成请求,返回检测到的结果
			结果数据是一个字典,存在多项数据内容,通过键值对进行表示
			返回结果如下

3、完成人脸搜索,搜索库中是否存在对应人脸,进行签到

二.实时时间显示

添加一个定时器,定时时间为500ms,每500ms产生一个信号。

 #启动获取系统时间/日期定时器,定时时间为500ms,500ms产生一次信号
self.datetime.start(500)
#关联时间/日期的定时器信号与槽函数
self.datetime.timeout.connect(self.data_time )

在这里插入图片描述设置函数data_time获取时间与日期,添加到对应的定时器。
这样每隔500ms就获取时间与日期

#data_time函数获取日期与时间,添加到对应的定时器
    def data_time(self):
        # 获取日期
        date = QDate.currentDate()
        #print(date)
        self.dateEdit.setDate(date)
        self.label_3.setText(date.toString())
        # 获取时间
        time = QTime.currentTime()
        #print(time)
        self.timeEdit.setTime(time)
        self.label_2.setText(time.toString())
        # 获取日期时间
        datetime = QDateTime.currentDateTime()
        #print(datetime)

在这里插入图片描述显示运行结果:
时间能够实时显示,不再是之前的设置了就不变了。
在这里插入图片描述

三.百度AI人脸识别

3.1 获取access_token

实现人脸检测:在线检测-----让百度AI进行检测
实现方式:
发送请求(向百度AI发送人脸检测请求,让百度AI去完成人脸检测,返回检测结果)
发送请求不是任意的网络请求能够接受,必须有百度提供的访问令牌(access_token)

在发送请求前必须先有access_token,获取access_token:
点击链接进入网页https://ai.baidu.com/?track=cp:aipinzhuan|pf:pc|pp:AIpingtai|pu:title|ci:|kw:10005792,点击进入人脸识别。
在这里插入图片描述点击立即使用,输入百度账号,进入百度智能云。
当然你也可以点击技术文档,查看其人脸检测的具体技术实现。
在这里插入图片描述点击人脸识别,在选择创建应用。
在这里插入图片描述这里在应用简称和应用描述上都是人脸检测,其他都是默认,点击创建。
在这里插入图片描述这样我们就有了API Key,Secret Key放便获取access_token
在这里插入图片描述

3.2 发送请求,通过网络请求方式完成让百度AI进行人脸检测

首先是获取access_token,具体的函数这里不做过多解释,感兴趣的朋友可以点击链接技术文档,深入了解。

    def get_accesstoken(self):
        print("get_accesstoken")

        #host对象是字符串对象存储是授权的服务地址-----获取accesstoken的地址
        host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=1cFzLl7ZshdilAAMZnnyX4Ak&client_secret=2OgXkKUAPSEQzQmnkj88LGGoj71Kk3Tj'
        #发送网络请求   requests网络库
        #使用get函数发送网络请求,参数为网络请求的地址,执行时会产生返回结果,结果就是请求的结果
        response = requests.get(host)
        if response:
            # print(response.json())
            data = response.json()
            self.access_token = data.get('access_token')
            print(self.access_token)

获取了令牌后,我们就可以上传图片,让百度AI进行人脸检测,并对相关属性进行分析并返回。
这里我是请求识别了人脸的性别,年龄,以及美丽程度。

    def get_face(self):
        #获取一张图片(一帧画面)
        #getOpenFileName通过对话框的形式获取一个图片(.JPG)路径
        path,ret = QFileDialog.getOpenFileName(self,"open picture",".","图片格式(*.jpg)")
        #把图片转换成base64编码格式
        fp = open(path,'rb')
        base64_imag = base64.b64encode(fp.read())
        print(base64_imag)
        #发送请求的地址
        request_url = "https://aip.baidubce.com/rest/2.0/face/v3/detect"
        #请求参数是一个字典,在字典中存储,百度AI要识别的图片信息,属性内容
        params = {
            "image":base64_imag,#图片信息字符串
            "image_type":"BASE64",#图片信息格式
            "face_field":"gender,age,beauty"#请求识别人脸的属性, 各个属性在字符串中用,逗号隔开
        }

        #访问令牌
        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_msg'] == 'SUCCESS' :
                age = data['result']['face_list'][0]['age']
                beauty = data['result']['face_list'][0]['beauty']
                print(age)
                print(beauty)

代码运行
第一步,获取access_token令牌
在这里插入图片描述第二步,上传照片,百度AI分析并返回其分析的结果
在这里插入图片描述在这里插入图片描述

四.相关下载

代码下载:Face_Recognition_Project_3.zip

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值