python考勤系统代码_500行python代码打造刷脸考勤系统
“员工刷脸考勤”系统,采用python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数据来标识每一个员工的面部信息,二是持久化地保存这些信息到数据库中去。更细地,还涉及表的设计;另一个基本要求是通过摄像头识别员工面部信息来完成考勤,这个问题基本可以通过遍历数据库里的员工面部数据与当前摄像头里的员工面部数据的比对来实现,但有一个问题就是假如摄像头里有多张人脸改怎么处理。扩展要求是导出每日的考勤表,可以拆分为两个部分,一个是存储考勤信息,一个是展示考勤信息。
我们希望达到的目标是:
(1)仿照通用型软件界面设计的原则,所有的操作都在菜单栏里实现,一部分区域用于展示摄像头实时读取并由程序加工后的视频流信息,另一部分区域做控制台输出,打印相关信息,比如提示员工面部信息添加成功、添加失败及其原因,提示员工打卡成功、打卡失败及其原因;添加面部信息时人是必须和程序进行交互的,比如输入一些相关的信息,这个时候程序是阻塞的;但是在打卡的时候,程序是不阻塞的,如果不点击关闭打卡,它会一直在打卡的模式,等待并识别每一个前来打卡的员工,这比较符合现实的使用场景。
(2)建表来存储员工信息和考勤信息,每次新建录入员工面部信息时,要求输入工号、姓名,并查无重后方可录入,录入时只取距离屏幕最近的员工的面部信息,这是考虑到实际打卡都是依次进行而不是一群人一群人地打卡,录入时有两种模式可供选择,自动模式:一旦识别到人脸就自动捕获截图,连续截图达到10张就结束录入;手动模式:点击菜单结束录入,不一定要得到10张。结束录入后就开始从刚才捕获的员工面部提取人脸特征数据并连同之前输入的员工姓名等数据作为一行记录保存到数据库中,如果没有捕获到员工面部或者刚才捕获的面部信息不是同一个人,这行记录就被丢弃。
考勤时,须满足三个条件:面部信息已录入、在打卡时间段内、未重复打卡,只有打卡成功,打卡人姓名及工号、打卡日期及时间才会被当成一行记录保存到数据库并在控制台输出打卡成功信息,否则会在控制台输出失败及其原因信息。
总而言之:我们的设计目标是规范化、人性化。
总体设计
为了完成上述目标一,程序的界面初始化分为三部分,第一部分初始化菜单栏,第二部分初始化左边控制台,第三部分初始化右边展示面板,使这三部分相互独立;数据逻辑部分的初始化分为两部分,第一部分是数据库部分的初始化,如果数据库/表不存在就新建,存在则加载相关数据,第二部分是初始化一些需要循环使用的变量,比如新建录入时的员工姓名、工号、截图数目计数器等,每当完成录入时这些数据都应该被重置成初始化以待下一次录入,把这些初始化语句写成一个函数可以提高代码复用度。
上述目标二主要是一些限制性条件,可以通过添加判断语句来实现,比如对输入id的合法性检验:
while self.id == ID_WORKER_UNAVIABLE:
self.id =wx.GetNumberFromUser(message="请输入您的工号(-1不可用)",prompt="工号", caption="温馨提示",value=ID_WORKER_UNAVIABLE, parent=self.bmp,max=100000000,min=ID_WORKER_UNAVIABLE)
forknew_idinself.knew_id:
ifknew_id== self.id:
self.id = ID_WORKER_UNAVIABLE
wx.MessageBox(message="工号已存在,请重新输入", caption="警告")
其中ID_WORKER_UNAVIABLE是id的初始化值-1,不可用,self.knew.id是从数据库里加载出来的id列表,如果id非法(已重复或者不在0~100000000,就会一直有新的弹窗来提示输入id。
再比如对拒绝多张人脸时、只处理距离屏幕最近的员工的面部信息:
iflen(dets) != 0:
biggest_face=dets[0]
#取占比最大的脸
maxArea= 0
for det in dets:
w =det.right() -det.left()
h =det.top()-det.bottom()
if w*h >maxArea:
biggest_face= det
maxArea= w*h
dets是侦测到的所有面部数组,biggest_face是距离屏幕最近的面部。
程序框图:
注:图片如看不清也可在线预览:https://www.processon.com/view/link/5bbcc953e4b08faf8c7324a1
本程序的设计思想大致可分为以下几个方面
面向对象的原则,整个程序的主体就是一个WAS(WorkAttendanceSystem)类,所有的实现都围绕这个类展开。
界面和数据逻辑分离的原则,WAS类的初始化过程包括界面的初始化和数据初始化,两者相互独立。
代码封装原则,多次调用的语句集写成接口供调用,没有冗余的代码。
接口隔离原则:使用多个专门的接口,而不是使用单一的总接口。
python考勤系统代码_500行python代码打造刷脸考勤系统相关推荐
- python打卡摄像头黑屏_500行Python代码打造刷脸考勤系统 !
需求分析 "员工刷脸考勤"系统,采用Python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数据来标识每一个员工的面部信息,二是持久 ...
- python代码示例500行源代码-500行Python代码打造刷脸考勤系统,其实也就那么简单...
需求分析 "员工刷脸考勤"系统,采用Python语言开发,可以通过摄像头添加员工面部信息,这里就涉及到两个具体的个问题,一个是应该以什么样的数据来标识每一个员工的面部信息,二是持久 ...
- python读取文件第n行-Python读取文件后n行的代码示例
这篇文章主要介绍了Python实现读取文件最后n行的方法,涉及Python针对文件的读取.遍历与运算相关操作技巧,需要的朋友可以参考下# -*- coding:utf8-*- import os im ...
- python自动化--如何用10行Python代码调一个闹钟 #电脑调闹钟
python自动化--如何用10行Python代码写一个闹钟 前言: 文末彩蛋--轻松一刻 更多关于Python的知识请加关注哟~~.若需联系博主请私信或者加博主联系方式: QQ:1542 ...
- 基于OpenCV的刷脸考勤&人脸校验&用户管理系统(源码&教程)
1.研究背景 随着人工智能时代的来临,深度学习赋予了以人脸图像为中心的计算机视觉任务更多的可能.人脸检测是人脸识别系统组成的关键部分之一,其目的是检测出任意给定图片中的包含的一个或多个人脸,是人脸识别 ...
- 刷脸考勤无感签到不是说说而已
说起来,刷脸在这个时代不算陌生,刷脸解锁.刷脸支付.刷脸取款-种种应用层出不穷,刷脸考勤也早有尝鲜者.据了解,早在几年前就开始推广刷脸考勤系统,并基于人脸识别技术推出了签到荚移动考勤系统. 用该系统, ...
- 人脸识别应用于刷脸考勤的设计与效果
人脸识别应用于刷脸考勤的设计与效果 人脸识别在心通达OA中应用于刷脸考勤,技术采用的是Face SDK针对手机移动设备的人脸技术开发包,开发包SDK包含人脸检测.活体识别等功能.基于该技术,心通达OA ...
- 刷脸考勤,重新定位校园管理
近几年,人脸识别技术在安防领域得到了广泛应用,随着技术的不断发展,它离我们的日常生活越来越近,手机.商场.公园.校园等都可以看到它的身影.刷脸考勤,重新定义校园管理. 人脸识别,也叫面部识别,是一种基 ...
- python图片识别-用10行Python代码进行图像识别
随着深度学习算法的兴起和普及,人工智能领域取得了令人瞩目的进步,特别是在计算机视觉领域.21世纪的第二个十年迅速采用卷积神经网络,发明了***进的算法,大量训练数据的可用性以及高性能和高性价比计算的发 ...
- 一款Python实用神器,5 行 Python 代码 实现一键批量扣图
今天给大家分享一款Python装逼实用神器. 在日常生活或者工作中,经常会遇到想将某张照片中的人物抠出来,然后拼接到其他图片上去.专业点的人可以使用 PhotoShop 的"魔棒" ...
最新文章
- 使用logrotate管理nginx日志文件
- python字典通过键值获取键名,通过value获取key
- 单元测试02:Open-Cover安装与使用
- 添加dubbo xsd的支持
- [2020-ECCV]PIPAL-a Large-Scale Image Quality Assessment Dataset for Perceptual Image Restoration论文简析
- java查找字符串是否有单词_java – 用于搜索单词/字符串是否包含在实...
- Access安全性之QA详解
- 题目:求100以内的全部素数,每行输出10个。1不是素数
- 开源同步文件软件对比
- 服务器上安装微软雅黑,添加微软雅黑字体到 CentOS 7
- html网页在线加密解密工具源码
- 定时器 + websocket
- HDUOJ---携程员工运动会场地问题
- 旅游业休克:“云旅游+直播买货”急救
- win10系统过期或处于通知模式
- 飞塔防火墙密码忘记重置方法
- 鸿蒙系统预计什么时候上市,鸿蒙系统什么时候上市?鸿蒙系统什么时候用于手机(图文)...
- 【0429】散列函数和消息鉴别
- 编写程序求反正弦函数近似值
- WindowsServer2012 R2配置远程服务器并使用域名访问(非 IIS)
热门文章
- 万能五笔输入法弹窗_万能五笔输入法广告如何彻底关闭
- k8s技术预研11--kubernetes网络原理
- HTML5 浏览器大小缩放到一定大小固定页面
- Linux——常用工具
- Latex插入PPT矢量图
- DeepLearning | Broad Learning System 宽度学习系统 : 高效增量式浅层神经网络
- 2020洪灾地图_卫星地图看洪灾:“告急”的鄱阳湖发生了什么?
- 【编译原理系列】语法分析与上下文无关文法
- IP子网划分概念:IP地址,子网和网关配置——Vecloud
- 一.mtk平台的gpio控制