python考勤管理系统_python基础教程:face++与python实现人脸识别签到(考勤)功能...
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府
这篇文章主要为大家详细介绍了face++与python实现人脸识别签到(考勤)功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
项目实现利用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
(
)
(
"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
(
)
}
(
"..."
)
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"
]
(
"..."
)
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"
]
(
"..."
)
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())))
(
faceID_dict
[
pre_face_token
]
)
else:
tkinter.messagebox.askokcancel
(
'提示'
,
'未找到'
)
(
"未找到"
)
建立云脸数据集的模块:
#!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:
(
item
)
data
=
{
"api_key"
:key,
"api_secret"
:secret,
"faceset_token"
:faceset_token,
"face_tokens"
:item
}
response
=
requests.post
(
http_url, data
=
data
)
(
response
)
(
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
)
(
repn
)
(
repn.text
)
data
=
{
"api_key"
:key,
"api_secret"
:secret
}
repn
=
requests.post
(
get_url,data
=
data
)
(
repn
)
(
repn.text
)
data
=
{
"api_key"
:key,
"api_secret"
:secret,
"outer_id"
:
'zbpm'
}
repn
=
requests.post
(
getdetails_url,data
=
data
)
(
repn
)
(
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
)
(
faceID_List
)
(
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核心知识,深入的研习计算机基础知识,整理好了,如果你也不甘平庸,那就与我一起在编码之外,不断成长吧!
其实这里不仅有技术,更有那些技术之外的东西,比如,如何做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗? [点击加入] 想做你自己想成为高尚人,加油!
python考勤管理系统_python基础教程:face++与python实现人脸识别签到(考勤)功能...相关推荐
- python expect模块_Python基础教程:用Python怎么telnet到网络设备
Python基础教程:用Python怎么telnet到网络设备 0.前言 Telnet协议属于TCP/IP协议族里的一种,对于我们这些网络攻城狮来说,再熟悉不过了,常用于远程登陆到网络设备进行操作,但 ...
- Python+OpenCV人脸识别签到考勤系统(新手入门)
Python+OpenCV人脸识别签到考勤系统(新手入门) 前言 项目效果图 项目需要的环境 编译器 辅助开发QT-designer 项目配置 代码部分 核心代码 项目目录结构 后记 正式版改进 项目 ...
- python 包用法_Python 基础教程之包和类的用法
Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...
- python 字符串替换_Python基础教程,第四讲,字符串详解
本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...
- cpython python 区别面试_python基础教程之千万不要错过这几道Python面试题
第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...
- python 英语教学_Python基础教程(英文视频教学)
Python基础教程 -.1.-.Installing_Python_video.flv: http://www.t00y.com/file/10034879 -.2.-.Numbers_and_Ma ...
- python 字符串 数字_Python基础教程:数字、字符串
Python 数字 Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间. 以下实例在变量赋值时数字对象将被创建: var1 = 1 ...
- python系统关键字_Python基础教程 - global关键字及全局变量的用法
Python中global关键字主要作用是声明变量的作用域. 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void t ...
- python 三引号_Python 简明教程 --- 4,Python 变量与基本数据类型
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 任何一个人都会写出能够让机器理解的代码,只有好的程序员才能写出人类可以理解的代码. -- Marti ...
最新文章
- win10内建子系统Linux
- react中遇到的问题
- Spring高级应用之注入各类集合
- xp系统没有服务器时间,WinXP系统时间无法同步网络时间连时区也不显示的解决方法...
- P1337-[JSOI2004]平衡点/吊打XXX【模拟退火】
- 爱奇艺视频播放怎么开加速
- 炫酷科技感超前的电子产品发布广告海报psd分层模板,带给你炫酷的未来感
- 计算机网络(第七版)谢希仁编著 第四章课后答案详解
- NumPy学习挑战第一关-NumPy的下载与安装
- ubuntn 常用命令和快捷键汇总
- Android 抖音爱心动画,Android实现抖音心形函数
- xshell中出现的绿色背景的文件夹
- SCANV团队提供APPCMS安全漏洞独立补丁
- 多路输出开关电源的设计及应用原则
- html弹窗广告文件怎么做,视频加入广告 如何在视频文件中加入弹窗广告
- 基于深度学习神经网络的农业病虫害识别(完整代码+数据)
- linux--shell--crontab定义运行任务
- 广西规范市场主体信息归集公示运用 推进社会信用体系建设
- 使用python爬取电影下载地址并使用transmissionrpc下载
- 查找:顺序查找、二分查找、分块查找