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 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
Python实现股市信息下载的方法
Jun 15 Python
Python使用win32com实现的模拟浏览器功能示例
Jul 13 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
python中闭包Closure函数作为返回值的方法示例
Dec 17 Python
Python编程实现的简单神经网络算法示例
Jan 26 Python
Python系统监控模块psutil功能与经典用法分析
May 24 Python
通过shell+python实现企业微信预警
Mar 07 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
Oct 14 Python
在python中利用pycharm自定义代码块教程(三步搞定)
Apr 15 Python
python 字典item与iteritems的区别详解
Apr 25 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 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
怎样给PHP源代码加密?PHP二进制加密与解密的解决办法
2013/04/22 PHP
php获取网页里所有图片并存入数组的方法
2015/04/06 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
PHP SESSION跨页面传递失败解决方案
2020/12/11 PHP
javascript数组组合成字符串的脚本
2021/01/06 Javascript
jquery 分页控件实现代码
2009/11/30 Javascript
javascript中的float运算精度实例分析
2010/08/21 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
点击表单提交时出现jQuery没有权限的解决方法
2014/07/23 Javascript
jQuery中extend()和fn.extend()方法详解
2015/06/03 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
2015/08/21 Javascript
12个超实用的JQuery代码片段
2015/11/02 Javascript
极力推荐10个短小实用的JavaScript代码段
2016/08/03 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
Angular 4依赖注入学习教程之ClassProvider的使用(三)
2017/06/04 Javascript
Angularjs之ngModel中的值验证绑定方法
2018/09/13 Javascript
用Python编写简单的定时器的方法
2015/05/02 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
python脚本生成caffe train_list.txt的方法
2018/04/27 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
CSS3媒体查询Media Queries基础学习教程
2016/02/29 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
德国高性价比网上药店:medpex
2017/07/09 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
小学生自我评价范例
2013/09/24 职场文书
建材业务员岗位职责
2013/12/08 职场文书
工作决心书范文
2014/03/11 职场文书
小学英语课后反思
2014/04/26 职场文书
创业培训计划书
2014/05/03 职场文书
商业街策划方案
2014/05/31 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python