python指纹识别(PythonOpencvTkinter指纹识别与人脸识别的门禁兼考勤)
python指纹识别(PythonOpencvTkinter指纹识别与人脸识别的门禁兼考勤)
2024-11-22 01:01:19  作者:重归旧好  网址:https://m.xinb2b.cn/know/etb433428.html

一. 门禁考勤系统硬件设计

1 .硬件总体结构

PC端的intel处理器作为硬件平台的核心,是衡量系统能否达到标准的主要标志。本文结合考勤系统,采用intel i5处理器的PC与51单片机共同构建了门禁兼考勤系统的硬件平台,相关的硬件将在之后描述。其硬件的总体框图如下图


硬件总体框图

2. 系统硬件实现

系统的主要器材包括PC机,AS608光学指纹模块,51单片机最小系统(STC89C52RC芯片),继电器,电磁锁。

1)PC机。

PC机搭载了Intel(R)Core(TM)i5-7200U CPU @2.50GHz 2.71的处理器,拥有4GB的RAM,自带30万像素的摄像头以及两个USB端口。其中一个USB端口(COM4)用于控制指纹模块,另外一个USB端口(COM3)用于控制单片机。

2)AS608光学指纹模块,如下图。

AS608指纹识别模块是ALIENTEK出品的一种性能优异的光学指纹识别模块。该模块采用了杭州晟元芯片技术有限公司的AS608指纹识别芯片。芯片内置 DSP 运算单元,集成了指纹识别算法,能高效快速采集图像并识别指纹特征[4]。该模块配备了串口、USB 通讯接口,用户无需研究复杂的图像处理及指纹识别算法,只要通过简单的串口、USB 按照通讯协议,发送相应的指令数据包,便可控制模块。


AS608指纹模块

3)51单片机最小系统。

①12V电源电路,由于单片机最大能提供的电源只有5V,所以该电源为电磁锁提供12V的通电电源,实现门禁开锁。原理图如下。


12V供电电源

②复位电路与晶振电路,如下图。

复位电路提供单片机复位功能,上电时可给单片机res脚提供相应的复位电平信号,在该系统中复位键还启到关闭电磁锁的作用;晶振电路可以给单片机提供时钟输入。


复位电路与晶振电路

③继电器模块,如下图。

该模块结合PNP三极管,当P3.6高电平时,继电器未吸合,电磁锁处于关闭的状态;当P3.6低电平触发时,继电器吸合,电磁锁接通12V,处于关闭的状态。


继电器模块电路

④串口下载器,如下图。

该串口下载器具备下载.hex程序的功能,可以与PC机进行串口通信,又可以为单片机提供5V电源。


串口下载器

⑤电磁锁。

门禁系统的重点在于电磁锁,执行开锁关锁的动作。异于日常生活使用物品和人力来开锁,电磁锁通过高电平通电来打开锁,不存在传统意义的钥匙。

本文采用的电磁锁采用优质金属,防锈能力强,性能稳定,坚固耐用;表面采用电镀工艺,平滑无刺,开关顺畅,内部使用全铜线圈,通电开,断电锁[5]。本系统选择电磁锁作为系统的动作执行模块,采用广州某公司生产的通电开锁式电磁锁,如下图所示。其工作电压直流12V,使用电流为0.4A,可以长期通电。


电磁锁

二. 门禁考勤系统软件设计

1. 软件运行环境的搭建

搭建基于Python tkinter opencv dlib的指纹识别与人脸识别门禁兼考勤系统,需要先在PC端Windows10系统下安装python环境以及相关的库,步骤如下:

1)安装python3.5:选择任意浏览器登陆https://www.python.org/ftp/python/3.5.0/python-3.5.0-amd64.exe,下载并安装python3.5版本,安装过程中需要勾上Add Python3.5 to Path,如图1;安装完成后,打开命令提示符窗口,输入python后,会出现如图2的情况,则安装成功,否则安装失败[6] 。


1.python安装过程


2.python安装成功

2)安装系统所需要的库,pyhton3.5自带的有tkinter,sqlite3,time,os,serial,binascii,zlib,io,需要自行安装的有skimage,dlib,numpy,opencv,webbrowser。

安装skimage,dlib,numpy,webbrowser的方法如下:打开命令提示符窗口,依次输入pip install skimage, pip install dlib, pip install numpy, pip install webbrowser。安装opencv的方法如下:任意浏览器登陆http://www.lfd.uci.edu/~gohlke/pythonlibs/,选择opencv_python-3.1.0-cp35-cp35m-win_amd64.whl进行下载,然后拷贝opencv_python-3.1.0-cp35-cp35m-win_amd64.whl到Python安装目录Lib\site-packages下,最后在命令提示符窗口切换到D:\Program Files\Python\Lib\site-packages目录下,输入pip install opencv_python-3.1.0-cp35-cp35m-win_amd64.whl;所有的库安装成功如下图


python相关库安装成功

2. 系统软件的总体设计

1、系统的需求分析:

该门禁兼考勤系统,采用python语言开发,可以通过AS608指纹模块收集每个用户的两枚指纹信息,可以对用户的指纹信息进行录入、验证和删除;可以通过电脑自带的摄像头添加用户的人脸信息,这里涉及到三个具体的问题,一个是怎样去采集、匹配和删除用户的指纹信息和人脸信息。二是持久化地保存这些信息到数据库中去,由于AS608指纹模块拥有存储用户指纹信息和id的功能,要考虑的是把对应的用户id、姓名和人脸信息对应的写入数据库,这里还涉及表的具体设计;另一个基本要求是通过指纹模块和摄像头来进行指纹识别和人脸识别来完成考勤和门禁,PC在通过串口发送一系列的指令包到指纹模块进行指纹识别,通过指纹验证后,可以通过遍历数据库里的用户面部数据与当前摄像头里的面部数据的比对来实现,存在问题有摄像头出现多张人脸[7]。三是需要对用户信息和考勤日志信息进行管理,这里涉及了用户模式与管理模式。扩展要求是添加了网页端的超级管理员模式。

本文希望达到的目标是:

1)此门禁兼考勤设计成软件UI操作界面,通过点击菜单进行操作,菜单拥有可用性和不可用性[7],具备用户模式和管理员模式,进入管理员模式需要输入正确的管理员账号和密码,如图2.1。而右边区域用于展示系统的LOGO图案和日志信息,如下图2.2;左边区域做控制台输出,打印相关信息,比如提示录入用户指纹信息、人脸信息与个人信息是否成功及其原因,提示用户验证信息,进行打卡成功、打卡失败及其原因,并通过串口通信控制51单片机实现门禁的功能。在添加指纹信、人脸信息和进行打卡的时候,人是必须和操作界面进行交互的。


2.1系统的菜单


2.2系统LOGO和部分日志信息

2)系统通过建表来存储用户信息,考勤日志信息和管理员信息,每次新建录入用户指纹信息和人脸信息时,要求输入未存在的id和姓名,如查重证明id和姓名已存在,将无法进行下一步。接着用户进行指纹录入时,需要进行按压两次指纹,录入两枚相同的指纹,作为用户的指纹信息。当用户指纹录入成功后,开始进行人脸录入,此时只取面积最大的人脸,也就是距离屏幕最近的人脸,这是考虑到用户需要依次进行打卡验证。用户在进行人脸录入时存在两种情况:第一是一旦识别到人脸就自动捕获截图,连续截图达到10张就结束录入;第二是用户手动点击菜单结束录入,不一定要得到10张。结束录入后就开始从刚才捕获的用户面部提取人脸特征数据并连同之前输入的用户姓名等数据作为一行记录保存到数据库中,如果没有捕获到员工面部或者刚才捕获的面部信息不是同一个人,这行记录就被丢弃。

考勤时,须满足三个条件:用户的指纹信息和面部信息已录入、没有重复打卡,一旦打卡成功,用户的id、姓名、打卡日期及时间,是否迟到等信息,作为一行记录保存到数据库日志表logcat,并在左边控制台输出打卡成功信息,否则会在控制台输出失败及其原因信息。但是不管是否迟到,只要用户指纹信息和人脸信息都验证通过,电磁锁就可以自动打开5s。

3)系统拥有管理员模式与超级管理员模式。管理员模式是在管理员菜单栏中,点击进入管理员模式,输入正确的账号和密码后,管理员的所有菜单将变为可用,可以进行删除特定的指纹,一键删除指纹,删除本地用户人脸信息,删除数据库日志和用户信息,直接打开锁,进入网页端管理平台,在点击退出管理员模式之后,除了进入管理员模式,其他管理员的功能菜单将会再度变灰。而超级管理员模式,则是需要在网页端输入正确的超级管理员账号与密码后,将拥有修改用户信息,日志信息,管理员账号和密码的功能。

2、系统软件的目标:

1)为了实现需求分析的目标一,程序的界面初始化分为三部分,界面上方为菜单栏,界面左下方作为消息打印控制台,界面右下方为logo图案或日志信息展示面板,这界面的三部分是独立分开的;数据逻辑部分的初始化分为两部分,第一部分是初始化数据库,如果数据库/表不存在就新建,存在则加载相关数据,第二部分是初始化一些需要循环使用的变量,比如新建录入时的员工姓名、工号、截图数目计数器等,每当完成录入时这些数据都应该被重置成初始化以待下一次录入,把这些初始化语句写成一个函数可以提高代码复用度。

2)完成需求分析目标二主要是一些限制性条件,可以通过添加判断语句来实现:

①比如对输入id的合法性检验:

id = int(self.entry.get())

print(self.knew_id)

while id < 0:

messagebox.showwarning(title = "系统提示",message = "id不能为负数")

for knew_id in self.knew_id:

if int(knew_id) == id:

messagebox.showwarning(title = "系统提示",message =

"id已存在,请重新输入")

return False

其中id是从输入框得到的,self.knew.id是从数据库里加载出来的id列表,如果id非法(为负数),就会出现新的弹窗来提示id不能为负数。

②比如需要先指纹录入通过后才能进行人脸信息录入:

self.infoText.insert(INSERT,"\r\n对比两次指纹\r\n" )

sleep(1)

while True:

match = [0x01,0x00,0x03,0x03,0x00,0x07]

self.sendcmd(match)

self.receive()

if self.flag == 1:

self.infoText.insert(INSERT,"\r\n对比成功,两次指纹一样\r\n" )

sleep(1)

print("对比成功,两次指纹一样")

break

else:

print("对比失败,请重新录入指纹")

self.infoText.insert(INSERT,"\r\n对比失败,请重新录入指纹\r\n" )

sleep(1)

self.Buffer1()

self.Buffer2()

其中每个指纹进行录入的时候,需要录入两次相同的指纹,即调用函数self.Buffer1()和self.Buffer2();两个指纹对比成功之后,才可以跳出循环。

③再比如对拒绝多张人脸时、只处理距离屏幕最近的员工的面部信息:

if len(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是占面积最大的人脸。

3)完成需求分析目标三,需要在数据库多建一个管理员账号密码表,多增管理员菜单栏,完成管理员模式。超级管理员模式则是通过python Django搭建网页端的管理后台。

2、本程序的设计思想大致可分为以下几个方面[7] :

1)面向对象的原则,整个系统程序的主体基本是一个System()类,所有函数的实现都围绕这个类展开。

2)界面的显示和数据逻辑分离的原则,System类的初始化过程包括界面的初始化和数据初始化,两者相互独立。

3)代码封装原则,程序包含多个函数,大部分语句集写成接口函数供调用,没有冗余的代码。

4)接口隔离原则:拥有多个功能性的接口函数,而不是单一的总接口函数。

3、系统的软件设计框图如下图:


系统程序框图


主界面


管理员登陆界面

此文未完,将持续更新。转发本文,关注私信小编,将可获得python学习资料

  • 偏字毛笔行书写法(粉笔行书的常用偏旁写法)
  • 2024-11-22粉笔行书的常用偏旁写法第三节粉笔行书的常用偏旁写法较熟练地掌握了行书笔画的写法之后,我们可以进入行书偏旁的写法训练因为偏旁是各种点画的固定搭配,是笔画训练和文字书写之间的中间环节,这一中间环节不掌握好,在整个字的行书书写中。
  • 庞统真的身殒落凤坡吗(庞统陨落落凤坡)
  • 2024-11-22庞统陨落落凤坡大家好,我是以史为鉴墨上桑今天我们继续《墨说三国》的小故事环节目前绝大部分人对于三国的了解都是来自于罗贯中的经典小说《三国演义》三国而罗贯中在创作《三国演义》时,不但参考综合了史书《三国志》、《后汉书。
  • 哪些国家有国王(世界上有哪些国家是有国王的)
  • 2024-11-22世界上有哪些国家是有国王的英联邦:英联邦比较特殊,英联邦内所有的成员都是奉英国女王是自己国家的元首的所以严格的说他们都是君主立宪的国家,也就是所都是有国王的目前还是有16个成员国主要集中在北美洲和大洋洲,其中北美洲有包括加拿大。
  • 哈尔滨违停在哪里交罚款(小货车路边违停)
  • 2024-11-22小货车路边违停前几天,哈尔滨市交警支队平房大队的交警巡逻到新友街时,发现一辆小货车违停占道售卖货物,对沿线交通造成了拥堵交警立即上前取缔,当他们走到车前时,发现车辆号牌有些不对劲哈尔滨市交警支队平房大队二中队民警张。
  • 父亲是棵树(父亲是朵花)
  • 2024-11-22父亲是朵花今天看到一个孩子在作文中写道:“俗话说,父爱如山,母爱如水可在我眼里,母爱也象一座山,让我感到了母爱的深沉和温暖”上课的时候恰好遇到仿写题,就让学生展开想象说说母亲像什么一个调皮的男生抢着说:“母亲是。
  • 五香鸡片如何做(五香鸡片制作的具体步骤有哪些)
  • 2024-11-22五香鸡片制作的具体步骤有哪些把腌制三黄鸡准备好放在容器中准备一只三黄鸡清理干净,或者买现成的比较省事,用牙签或者叉子在鸡身上扎出小洞,可以让鸡很好的入味把整只鸡放进调好的腌制的料汁中,容器大一点,不然鸡会腌不透把鸡仔细按摩一下方。
  • 诗词中的春夏秋冬好浪漫(暗香如沁之诗词)
  • 2024-11-22暗香如沁之诗词七绝·初春作者暗香如沁东风片片坐花枝,桥下春波复起迟不忍江心愁月半,归来独钓去年诗七绝·初春作者暗香如沁浮生落笔即相知,莫问梅花到几时分得江南春一朵,鬓边题作解愁诗七绝·初春作者暗香如沁昨夜新枝叠旧枝。
  • 干菜时间长了能吃吗(建议这6种干菜多囤点)
  • 2024-11-22建议这6种干菜多囤点今年的疫情真是让人提心吊胆的,很多地方一直不稳定,反反复复,比第一次爆发的感染人数还要多现在上海疫情大爆发,在上海的居民已经隔离很久了,希望疫情快点过去,恢复平静的生活在疫情期间吃饭问题是大家最关心的。
  • 欧亚学院面积多少(打卡欧亚新地标)
  • 2024-11-22打卡欧亚新地标△学校领导、嘉宾共同为西大门揭牌今天,欧亚又有了一处新地标!大家期盼许久的欧亚西大门,经过一周多时间的试运行后,5月9日上午正式启用西安欧亚学院新标识同期启用西安欧亚学院董事长胡建波教授,法国巴黎国立。
  • 书山有路勤为径笔耕不辍(书山有路勤为径)
  • 2024-11-22书山有路勤为径路温舒是西汉人从少年时代起,他就热爱学习,但是家里很穷,父亲又在外担任看守大门的工作,没有时间帮家里劳动他只好打消进学校读书的念头,每天赶着羊到野外去放牧在野外放羊,本来也可以读书可是,他没有书,也没。