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


Posted in Python onAugust 28, 2019

项目实现利用face++开发一个课堂签到的软件,实现面向摄像头即可完成记录学号、姓名和时间的签到工作。

项目架构

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

项目使用场景

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

代码:

流程代码,主文件

#!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()

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

Python 相关文章推荐
Python基于DES算法加密解密实例
Jun 03 Python
Python中常用操作字符串的函数与方法总结
Feb 04 Python
Python3学习笔记之列表方法示例详解
Oct 06 Python
python如何将图片转换为字符图片
Aug 19 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
python DES加密与解密及hex输出和bs64格式输出的实现代码
Apr 13 Python
Python自动化操作实现图例绘制
Jul 09 Python
vue.js刷新当前页面的实例讲解
Dec 29 Python
python爬取微博评论的实例讲解
Jan 15 Python
基于python的matplotlib制作双Y轴图
Apr 20 Python
Python内置的数据类型及使用方法
Apr 13 Python
Python实现聚类K-means算法详解
Jul 15 Python
OpenCV+face++实现实时人脸识别解锁功能
Aug 28 #Python
Python的垃圾回收机制详解
Aug 28 #Python
Python通过cv2读取多个USB摄像头
Aug 28 #Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 #Python
Django--权限Permissions的例子
Aug 28 #Python
Python中函数的返回值示例浅析
Aug 28 #Python
django认证系统实现自定义权限管理的方法
Aug 28 #Python
You might like
PHP4实际应用经验篇(5)
2006/10/09 PHP
php+javascript的日历控件
2009/11/19 PHP
header跳转和include包含问题详解
2012/09/08 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
javascript实现日历控件(年月日关闭按钮)
2012/12/12 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
js操作label给label赋值及取label的值示例
2013/11/07 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
javascript下拉列表菜单的实现方法
2015/11/18 Javascript
如何在Linux上安装Node.js
2016/04/01 Javascript
Asp.Net之JS生成分页条的方法
2016/11/23 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
jquery根据name取得select选中的值实例(超简单)
2018/01/25 jQuery
JS中常用的消息框总结
2018/02/24 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
python操作MySQL数据库具体方法
2013/10/28 Python
Python实现读取json文件到excel表
2017/11/18 Python
详解如何利用Cython为Python代码加速
2018/01/27 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
PyQt5+python3+pycharm开发环境配置教程
2020/03/24 Python
Python短信轰炸的代码
2020/03/25 Python
Python实现aes加密解密多种方法解析
2020/05/15 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
解决html5中video标签无法播放mp4问题的办法
2017/05/07 HTML / CSS
入股协议书范本
2014/11/01 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
处世之道:关于真诚相待的名言推荐
2019/12/02 职场文书
基于CSS3画一个iPhone
2021/04/21 HTML / CSS
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android
Window server中安装Redis的超详细教程
2021/11/17 Redis