项目实现利用face++开发一个课堂签到的软件,实现面向摄像头即可完成记录学号、姓名和时间的签到工作。
项目架构
项目使用场景
代码:
流程代码,主文件
#!usr/bin/ # -*- coding: utf-8 -*- import requests from json import JSONDecoder import csv import cv2 import time import 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) break cap.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 requests import time from json import JSONDecoder import 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 = 0 for 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 requests from 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 requests from json import JSONDecoder import 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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“face++与python实现人脸识别签到(考勤)功能”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2024年10月06日
2024年10月06日
- 群星《前途海量 电影原声专辑》[FLAC/分轨][227.78MB]
- 张信哲.1992-知道新曲与精丫巨石】【WAV+CUE】
- 王翠玲.1995-ANGEL【新艺宝】【WAV+CUE】
- 景冈山.1996-我的眼里只有你【大地唱片】【WAV+CUE】
- 群星《八戒 电影原声带》[320K/MP3][188.97MB]
- 群星《我的阿勒泰 影视原声带》[320K/MP3][139.47MB]
- 纪钧瀚《胎教古典音乐 钢琴与大提琴的沉浸时光》[320K/MP3][148.91MB]
- 刘雅丽.2001-丽花皇后·EMI精选王【EMI百代】【FLAC分轨】
- 齐秦.1994-黄金十年1981-1990CHINA.TOUR.LIVE精丫上华】【WAV+CUE】
- 群星.2008-本色·百代音乐人创作专辑【EMI百代】【WAV+CUE】
- 群星.2001-同步过冬AVCD【环球】【WAV+CUE】
- 群星.2020-同步过冬2020冀待晴空【环球】【WAV+CUE】
- 沈雁.1986-四季(2012梦田复刻版)【白云唱片】【WAV+CUE】
- 纪钧瀚《胎教古典音乐 钢琴与大提琴的沉浸时光》[FLAC/分轨][257.88MB]
- 《国语老歌 怀旧篇 3CD》[WAV/分轨][1.6GB]