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爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
python实现TF-IDF算法解析
Jan 02 Python
Python continue继续循环用法总结
Jun 10 Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 Python
python文件转为exe文件的方法及用法详解
Jul 08 Python
Python 转换文本编码实现解析
Aug 27 Python
Python3列表List入门知识附实例
Feb 09 Python
TensorFlow实现批量归一化操作的示例
Apr 22 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
Python CSS选择器爬取京东网商品信息过程解析
Jun 01 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
Mar 02 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 session处理的定制
2009/03/16 PHP
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
PHP使用Alexa API获取网站的Alexa排名例子
2014/06/12 PHP
php 使用array函数实现分页
2015/02/13 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
PHP MPDF中文乱码的解决方式
2015/12/08 PHP
Thinkphp5框架实现图片、音频和视频文件的上传功能详解
2019/08/27 PHP
Javascript !!的作用
2008/12/04 Javascript
jquery 最简单的属性菜单
2009/10/08 Javascript
Javascript 函数parseInt()转换时出现bug问题
2014/05/20 Javascript
JS实现兼容性好,自动置顶的淘宝悬浮工具栏效果
2015/09/18 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
jQuery控制文本框只能输入数字和字母及使用方法
2016/05/26 Javascript
jQuery+CSS实现简单切换菜单示例
2016/07/27 Javascript
Angular的自定义指令以及实例
2016/12/26 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
Node做中转服务器转发接口
2017/10/18 Javascript
JS简单判断是否在微信浏览器打开的方法示例
2019/01/08 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
使用axios请求接口,几种content-type的区别详解
2019/10/29 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
vue 实现基础组件的自动化全局注册
2020/12/25 Vue.js
Python实现字符串匹配的KMP算法
2019/04/04 Python
python实现连连看辅助之图像识别延伸
2019/07/17 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
python实现连续变量最优分箱详解--CART算法
2019/11/22 Python
python自动下载图片的方法示例
2020/03/25 Python
Python实现爬取并分析电商评论
2020/06/19 Python
TensorFlow中如何确定张量的形状实例
2020/06/23 Python
python 多线程中join()的作用
2020/10/29 Python
Python+kivy BoxLayout布局示例代码详解
2020/12/28 Python
担保书范文
2015/01/20 职场文书
2015高考寄语集锦
2015/02/27 职场文书
Nebula Graph解决风控业务实践
2022/03/31 MySQL