时间:2021-05-22
项目实现利用face++开发一个课堂签到的软件,实现面向摄像头即可完成记录学号、姓名和时间的签到工作。
项目架构
项目使用场景
代码:
流程代码,主文件
#!usr/bin/# -*- coding: utf-8 -*-import requestsfrom json import JSONDecoderimport csvimport cv2import timeimport tkinter as tk search_url = "https://api-cn.faceplusplus.com/facepp/v3/search"getdetail_url = "https://api-cn.faceplusplus.com/facepp/v3/faceset/getdetail"key = "***************"secret = "*********************" filename = time.time()filepath = "photo/" + str(filename) + ".jpg" cap = cv2.VideoCapture(0)while(1): # get a frame ret, frame = cap.read() # show a frame cv2.imshow("capture", frame) if cv2.waitKey(1) & 0xFF == ord('1'): cv2.imwrite(filepath, frame) breakcap.release()cv2.destroyAllWindows() print("waiting...") csvfile = open('face_token.csv','r')freader = csv.reader(csvfile)dic = dict(freader)csvfile.close()faceID_dict = {v:k for k,v in dic.items()}print("...") data = {"api_key": key, "api_secret": secret, "outer_id":'zbpm'}files = {"image_file": open(filepath, "rb")}response = requests.post(search_url, data=data, files=files)req_con = response.content.decode('utf-8')req_dict = JSONDecoder().decode(req_con)pre_face_token = req_dict["results"][0]["face_token"]pre_confidence = req_dict["results"][0]["confidence"]pre_thresholds = req_dict["thresholds"]["1e-5"]print("...") data = {"api_key": key, "api_secret": secret,"outer_id":'zbpm'}response = requests.post(getdetail_url, data=data)req_con = response.content.decode('utf-8')req_dict = JSONDecoder().decode(req_con)faces_token = req_dict["face_tokens"]print("...") if pre_face_token in faces_token and pre_confidence >= pre_thresholds: labaltext = faceID_dict[pre_face_token] + "\n\n\n" +str(time.asctime(time.localtime())) window = tk.Tk() window.title = ('FaceID') window.geometry = ('200x200') var = tk.StringVar() l = tk.Label(window,bg = 'yellow',text = labaltext,font=("黑体",20 ,"bold"),width = 30,height = 20) l.pack() l.config(text=labaltext+var.get()) #tk.messagebox.askokcancel('faceId', faceID_dict[pre_face_token] + "\n" +str(time.asctime(time.localtime()))) print(faceID_dict[pre_face_token])else: tkinter.messagebox.askokcancel('提示', '未找到') print("未找到")建立云脸数据集的模块:
#!usr/bin/# -*- coding: utf-8 -*-import requestsimport timefrom json import JSONDecoderimport csv http_url ='https://api-cn.faceplusplus.com/facepp/v3/faceset/addface'key = "z_qkMMqK1efq8ikgAPOEn89A7And-lAa"secret = "***********************"faceset_token = '******************************' face_tokens_str = ''csvfile = open('face_token.csv','r')freader = csv.reader(csvfile)facedata = []i = 0for item in freader: i = i + 1 face_tokens_str = face_tokens_str + item[1] + ',' if i%5 == 0: face_tokens_str = face_tokens_str[:-1] facedata.append (face_tokens_str) face_tokens_str = ''face_tokens_str = face_tokens_str[:-1]facedata.append (face_tokens_str)csvfile.close() for item in facedata: print(item) data = {"api_key":key,"api_secret":secret,"faceset_token":faceset_token,"face_tokens":item} response = requests.post(http_url, data=data) print(response) print(response.text)初始建立云联数据集的模块:
#!/usr/bin/env/ python# _*_ coding:utf-8 _*_ import requestsfrom json import JSONDecoder http_url = "https://api-cn.faceplusplus.com/facepp/v3/faceset/create"get_url = "https://api-cn.faceplusplus.com/facepp/v3/faceset/getfacesets"getdetails_url = "https://api-cn.faceplusplus.com/facepp/v3/faceset/getdetail"key = "**********************"secret = "*********************" data = {"api_key":key,"api_secret":secret,"display_name":'SEUers',"outer_id":'zbpm'} repn = requests.post(http_url,data = data)print(repn)print(repn.text)data = {"api_key":key,"api_secret":secret}repn = requests.post(get_url,data = data)print(repn)print(repn.text)data = {"api_key":key,"api_secret":secret,"outer_id":'zbpm'}repn = requests.post(getdetails_url,data = data)print(repn)print(repn.text)生成存储facetoken:
这里从171860学号开始生成我的facetoken
#!usr/bin/# -*- coding: utf-8 -*-import requestsfrom json import JSONDecoderimport csv id = 171860 http_url ='https://api-cn.faceplusplus.com/facepp/v3/detect'key = "*******************"secret = "*******************" faceID_List = []face_token_List = []for i in range (0,10): faceID = str(id + i) file = "picture/"+ faceID + ".jpg" data = {"api_key":key,"api_secret":secret,"return_landmark":1,} file = {"image_file":open(file,'rb')} response = requests.post(http_url,data = data,files = file) req_con = response.content.decode('utf-8') req_dict = JSONDecoder().decode(req_con) face_token = req_dict["faces"][0]["face_token"] faceID_List.append(faceID) face_token_List.append(face_token) print(faceID_List)print(face_token_List) csvfile = open('face_token.csv','a',newline = '')fwriter = csv.writer(csvfile)for i in range(len(faceID_List)): fwriter.writerow([faceID_List[i],face_token_List[i]])csvfile.close()以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
人脸检测这里的人脸检测并非人脸识别,但是却可以识别出是否有人,当有人时候,你可以将帧图进行人脸识别(这里推荐Face++的sdk),当然我写的demo中没有加入
本文实例讲述了PHP使用Face++接口开发微信公众平台人脸识别系统的方法。分享给大家供大家参考。具体如下:效果图如下:具体步骤如下:首先,先登录Face++的
1、员工考勤签到系统 员工通过App进行上下班的签到,根据企业不同的签到的模式,可以结合硬件,开发签到系统,用户只要站在门外通过人脸识别,对着识别的摄像头
基于pythonopencv人脸识别的签到系统前言先看下效果实现的功能开始准备页面的构建功能实现代码部分总结前言一个基于opencv人脸识别和TensorFlo
用签到荚智能考勤管理系统可帮助学校和企业有更好的管理体验。系统结合专人脸识别、高精度室内定位、移属动互联网、云计算等技术,不仅解决了“代签”、“考勤点签到”、“