face++与python实现人脸识别签到(考勤)功能 - python

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习

项目实现利用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"pen(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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

                    <p><p></td></tr></table>
原文地址是:http://www.piaodoo.com/thread-13748-1-7.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值