@本文来源于公众号: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

(

)

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核心知识,深入的研习计算机基础知识,整理好了,如果你也不甘平庸,那就与我一起在编码之外,不断成长吧!

其实这里不仅有技术,更有那些技术之外的东西,比如,如何做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗? [点击加入] 想做你自己想成为高尚人,加油!

python考勤管理系统_python基础教程:face++与python实现人脸识别签到(考勤)功能...相关推荐

  1. python expect模块_Python基础教程:用Python怎么telnet到网络设备

    Python基础教程:用Python怎么telnet到网络设备 0.前言 Telnet协议属于TCP/IP协议族里的一种,对于我们这些网络攻城狮来说,再熟悉不过了,常用于远程登陆到网络设备进行操作,但 ...

  2. Python+OpenCV人脸识别签到考勤系统(新手入门)

    Python+OpenCV人脸识别签到考勤系统(新手入门) 前言 项目效果图 项目需要的环境 编译器 辅助开发QT-designer 项目配置 代码部分 核心代码 项目目录结构 后记 正式版改进 项目 ...

  3. python 包用法_Python 基础教程之包和类的用法

    Python 基础教程之包和类的用法 这篇文章主要介绍了 Python 基础教程之包和类的用法的相关资料, 需要的朋友可以参考下 Python 是一种面向对象.解释型计算机程序设计语言,由 Guido ...

  4. python 字符串替换_Python基础教程,第四讲,字符串详解

    本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...

  5. cpython python 区别面试_python基础教程之千万不要错过这几道Python面试题

    第1题: python下多线程的限制以及多进程中传递参数的方式? python多线程有个全局解释器锁(global interpreter lock),简称GIL,这个GIL并不是python的特性, ...

  6. python 英语教学_Python基础教程(英文视频教学)

    Python基础教程 -.1.-.Installing_Python_video.flv: http://www.t00y.com/file/10034879 -.2.-.Numbers_and_Ma ...

  7. python 字符串 数字_Python基础教程:数字、字符串

    Python 数字 Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型得值,将重新分配内存空间. 以下实例在变量赋值时数字对象将被创建: var1 = 1 ...

  8. python系统关键字_Python基础教程 - global关键字及全局变量的用法

    Python中global关键字主要作用是声明变量的作用域. 在C语言中,由于变量一定是先声明,后使用,所以我们可以清楚的知道,现在使用的变量是全局还是局部,比如: int a = 5; void t ...

  9. python 三引号_Python 简明教程 --- 4,Python 变量与基本数据类型

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 任何一个人都会写出能够让机器理解的代码,只有好的程序员才能写出人类可以理解的代码. -- Marti ...

最新文章

  1. win10内建子系统Linux
  2. react中遇到的问题
  3. Spring高级应用之注入各类集合
  4. xp系统没有服务器时间,WinXP系统时间无法同步网络时间连时区也不显示的解决方法...
  5. P1337-[JSOI2004]平衡点/吊打XXX【模拟退火】
  6. 爱奇艺视频播放怎么开加速
  7. 炫酷科技感超前的电子产品发布广告海报psd分层模板,带给你炫酷的未来感
  8. 计算机网络(第七版)谢希仁编著 第四章课后答案详解
  9. NumPy学习挑战第一关-NumPy的下载与安装
  10. ubuntn 常用命令和快捷键汇总
  11. Android 抖音爱心动画,Android实现抖音心形函数
  12. xshell中出现的绿色背景的文件夹
  13. SCANV团队提供APPCMS安全漏洞独立补丁
  14. 多路输出开关电源的设计及应用原则
  15. html弹窗广告文件怎么做,视频加入广告 如何在视频文件中加入弹窗广告
  16. 基于深度学习神经网络的农业病虫害识别(完整代码+数据)
  17. linux--shell--crontab定义运行任务
  18. 广西规范市场主体信息归集公示运用 推进社会信用体系建设
  19. 使用python爬取电影下载地址并使用transmissionrpc下载
  20. 查找:顺序查找、二分查找、分块查找

热门文章

  1. [linux]远程kill进程
  2. 引用的本质是const指针
  3. Vue.js 2.6尝鲜
  4. 烂泥:Tomcat免安装版与JRE免安装版集成
  5. 企业微信正式发布 与阿里“钉钉”共逐移动办公市场
  6. Win8 Style App 播放Smooth Streaming
  7. 【ZooKeeper Notes 5】单机启动多个zk实例注意点
  8. 本训练中心主任致互联网技术学员
  9. mysql解决编码问题
  10. Spine 游戏开发的 2D