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局部赋值的规则
Mar 07 Python
python实现DES加密解密方法实例详解
Jun 30 Python
Django使用Celery异步任务队列的使用
Mar 13 Python
Python单元测试简单示例
Jul 03 Python
python遍历文件夹找出文件夹后缀为py的文件方法
Oct 21 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
python实现梯度下降和逻辑回归
Mar 24 Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 Python
python对一个数向上取整的实例方法
Jun 18 Python
Python3爬虫中关于中文分词的详解
Jul 29 Python
python 基于Apscheduler实现定时任务
Dec 15 Python
Python中else的三种使用场景
Jun 16 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
要会喝咖啡也要会知道咖啡豆
2021/03/03 咖啡文化
一个简单的自动发送邮件系统(二)
2006/10/09 PHP
php将数据库导出成excel的方法
2010/05/07 PHP
php报表之jpgraph柱状图实例代码
2011/08/22 PHP
写出高质量的PHP程序
2012/02/04 PHP
非常精妙的PHP递归调用与静态变量使用
2012/12/16 PHP
php curl选项列表(超详细)
2013/07/01 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
JS URL传中文参数引发的乱码问题
2009/09/02 Javascript
javascript下arguments,caller,callee,call,apply示例及理解
2009/12/24 Javascript
Javascript Function对象扩展之延时执行函数
2010/07/06 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
Javascript中数组方法汇总(推荐)
2015/04/01 Javascript
深入剖析JavaScript编程中的对象概念
2015/10/21 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
在Html中使用Requirejs进行模块化开发实例详解
2016/04/15 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
python实现K近邻回归,采用等权重和不等权重的方法
2019/01/23 Python
PyQt5根据控件Id获取控件对象的方法
2019/06/25 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
2020/03/28 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
Python如何使用vars返回对象的属性列表
2020/10/17 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
Python 实现进度条的六种方式
2021/01/06 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
Farfetch台湾官网:奢侈品牌时尚购物平台
2019/06/17 全球购物
社区志愿者心得体会
2014/01/03 职场文书
销售经理岗位职责
2014/03/16 职场文书
课内比教学心得体会
2014/09/09 职场文书
2014年政风行风评议工作总结
2014/10/21 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
单位接收证明格式
2015/06/18 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
Mybatis是这样防止sql注入的
2021/12/06 Java/Android