一.人脸搜索
首先还是参考百度的技术文档,可以看到想要进行人脸搜索操作就需要提供图片信息,格式,用户组id三个必需的参数
这些参数在之前就已经获取好了,只需要直接调用即可
# 人脸识别检测,只检测一个人
def face_search(self):
request_url = "https://aip.baidubce.com/rest/2.0/face/v3/search"
params = {
"image": self.base64_image,
"image_type": "BASE64",
"group_id_list": "class2",
}
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:
self.search_data.emit("学生签到成功\n学生信息:"+data['result']['user_list'][0]['user_info'])
为了使界面能够流畅显示,还是在之前的多线程类detect.py中调用这个函数
二.完善签到
人脸搜索成功后,百度会返回人脸标志,用户组id,以及用户信息。在这里就要用到用户信息,通过窗口右侧的学生签到情况来显示是否签到成功以及签到的学生的信息
从detect.py类中将返回的用户信息发送到mywindow.py类中,并将其用户信息打印到“学生签到情况”
同时如果出现摄像头未扫描到人脸的情况出现,添加一个条件语句,未扫到人脸时,打印失败原因并返回,防止程序卡死
三.代码演示
选择签到,点击启动签到,如果人脸匹配成功则在学生签到情况打印“签到成功”以及用户信息
如果出现匹配失败,则会打印失败原因,这里将摄像头遮住了,这里就在显示画面中没有人脸