2020年第01期
87
基于python 的校园人脸识别支付系统
陶子厚
湖北科技学院,湖北 咸宁 437100
摘要:每个学校都有自己的校园支付系统,校园卡为学生带来了各种福利与便利。但随着便利而来的,校园卡的遗失也为同学们带来了许多麻烦,不仅会耽误正常的校园生活,而且还冒着被他人盗刷的风险。因此,基于python,通过opencv,face recognition,numpy,dlib 等开源库实现校园人脸识别的支付系统,让校园支付体验更便捷、安全。
关键词:python;校园支付;人脸识别中图分类号:TP311.52
0 引言
在各个学校内,为了餐厅的管理与支付的方便,每个学校都建立了独立的支付系统,但基本都还停留在实物IC 卡的阶段[1-3]。虽然刷卡支付也很方便快捷,为学生们带来了各种福利与便利,但单纯通过IC 卡的支付方式已经无法满足师生对于便携的需求。与此同时,校园卡遗失的风险也威胁着学生们的财产安全,但校园支付系统关系着全校师生的福利,直接使用支付宝等支付方式确实不便。因此,出于安全和便捷的考虑,特开发了基于python 通过opencv,face_recognition,numpy,dlib 等开源库实现校园人脸识别的支付系统,通过人脸连接数据库。此系统在保证安全的前提下简化了支付流程。
1 人脸识别支付系统功能及工作流程
1.1 消费流程
在消费流程中与传统的校园卡并没有太大的区别,只是选定商品后刷卡的过程被刷脸取代而已,并且取消了更换系统的补办过程,在提升了寻常校园卡系统安全性与便携性之外,更换系统的过程中也不会影响学生的生活和学习。
1.2 管理流程
管理员拥有在后台管理所有信息的权限,可以核实金额信息时调出所有学生的流水用以核对。在毕业与招新期间添加与删除用户都通过管理员完成。商户在使用过程中的消费一些失误也通过联系管理员针对性修正。商户有为用户充值和接受用户消费
的能力,在服务途中,充值与消费由商户选择。学生可以通过刷脸的方式支付和在邮箱上查看个人月流水的信息,如图1所示。
图1 管理员与用户用例图
管理员
·查询所有账户流水·清理账户信息·纠正误操作
商户
·卖东西通过系统 收款
·收学生钱以充值
学生
·通过人脸识别消费·通过人脸识别充值·查询自己账户流水
由管理员输入如学生学号、余额、脸部信息等基本数据后。商户即可在门店使用本系统,当学生来到摄像机前,与库中人脸比对。比对结果如图2所示,用户通过按键确认信息是否正确。
图
2 学生视角系统
学生确认后进入下一步,否则重新识别。管理
2020年第01期
88
员选择进行消费还是充值操作。若是消费则余额减少,若是充值则余额增加,将数据变化记录在学生信息的流中。回到识别人脸的状态。直到商户确定退出系统,全流程如图3所示。
化成BGR 便于后面人脸识别的处理。
frame[:,:,::-1]
2.2 读取数据库
通过PyMySQL 连接数据库获取基本信息,也通过MySQL 数据库存储学生信息。MySQL 是一个关系型数据库管理系统。它处理数据快速且灵活。在这里可以灵活处理后台数据,包括流水记录和充值,消费等操作均依靠MySQL 完成。
2.3 人脸识别
这里用face_recognition 将读取到的帧与学生人脸信息库进行比对[4-6]。但是face_recognition 是依赖于dlib 的库。因此必须先导入dlib 库。dlib 是一个现代的C++工具箱,其中包含机器学习算法和工具,它在学术界广泛使用。这些库的导入都是免费的。识别时代码中有tolerance 的值其值一般是0.39,将其设低一点可以识别得更加严格。其值可根据实际情况进行调节。在识别时face_recognition 将在人脸上标出128个特征点。通过以下代码可辨别人脸位置并提取特征点。
face_location = f_r.face_locations(frame)face_encodings=f_r.face_encodings(frame,face_location)
通过比对不同图片上特征点的位置关系实现人脸识别。在人脸识别的过程中可以记录关于眼部上下特征点相对运动的过程实现活体检测。此时提取图片的帧率需恢复以提高活体检测的成功率。
2.4 在脸下标注已识别的信息
linux系统地址用angle()标出人脸,在人脸所在处画出一个矩形,然后通过PIL 库中的ImageDraw(),Image(),Imagefont()方法显示出姓名和余额。将图片格式换回后通过cv2.imshow()将处理后的信息显示出来,如图1所示。以下代码键入q 即可退出循环,学生键入的代码确认同理。
if cv2.waitKey(1) & 0xFF ==ord('q'): break
2.5 实现消费充值等操作
普通充值与操作直接在数据库中修改数据即可,如果余额不足则弹框提醒充值。此外,流水记录只保存一个月,当月尾清理数据库时,会自动将保存
图3 系统流程图
2 系统各功能的实现
该系统通过python3.6运行,通过PyMySQL 连接MySQL 数据库进行数据存储。充值、消费和查询操作均通过MySQL 完成。通过opencv 调用摄像信息,进行基本的图像处理。用face_recognition 模块对人脸的信息进行比对,numpy 用于多维数组与矩阵运算,dlib 实现对图片中人脸的信息进行提取。
2.1 视频权限获取与图片录入
Video_capture = cv2.VideoCapture(0)
通过以上代码调用摄像头,参数代表摄像头编号。这里是隔一帧取一次画面,通过定时器计算间隔。然后运用opencv 中的方法将图片长宽分别缩小若干倍,这样系统运行效率会快很多。具体倍数可根据摄像头分辨率,光照条件等事实情况调节,但检测到人脸后可以逐帧录入以便于进行活体检测提高安全性。
这里的cv2就是opencv 库,opencv OpenCV 是一个基于BSD 许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android 和Mac OS 操作系统上。它轻量级而且高效。这里用opencv 导入的图片是以RGB 的方式存储,通过以下代码转
继续服务
2020年第01期
89
的记录通过邮箱发给对应学生的邮箱。
3 结语
一直以来,校园卡都让学生又爱又恨,因为相对于现金支付来说也比较便携,但校园卡遗失带来的烦恼也会让校园生活带来困扰。本系统在python3.6的环境下实现了通过人脸识别支付的效果,不需要校园卡,而且具备安全性。在保留原有支付体系优点的前提下,对校园生活质量的提升毋庸置疑,不仅解决了校园卡易遗失的麻烦,还能便携的查询消费流水,最关键的是,确实有效提高了学生在校园中消费与充值过程中的体验。
参考文献
[1]鲁小勇,余丽,缪银.基于“校园一卡通”的消费支付
新思路探讨[J].华中师范大学学报:自然科学版,2017(1):80-184.
[2]万梅.基于“一卡通”第三方校园支付平台的研究[J].
电脑知识与技术:学术交流,2011(07):3528-3530.[3]李春若.基于手机钱包的校园支付系统架构设计研究[J].
软件,2012,33(5):38-39.
[4]张翠平,苏光大.人脸识别技术综述[J].中国图像图形
学报,2000,5(11):885-894.[5]郑崇微.人脸识别方法综述[J].山西电子技术,2013(2):
95-96.
[6]麻皓东,王天昊.基于人脸68特征点中两组特征值进行
微笑强度分析[J].仪器仪表用户,2018(1):12-16.
(上接第80页)
5 结语
综上所述,目前由于经济的快速发展,人们基本都拥有一些智能设备,这些设备在使用的过程中就会产生数据。而且这些数据都是存储在企业的数据库中,对于个人来说,这些信息包括了社交账号密码,银行卡账号密码等重要信息,这些信息一旦泄露,那么危害无疑是巨大的。因此,企业需要提高自身的网络安全防护技术,同时政府也需要加大宣传力度,对于网络信息安全建设投入更多的人力、
物力,从而促进大数据行业的发展。
参考文献
[1]李红波.大数据背景下工业网络信息安全防护对策分析
[J].网络安全技术与应用,2019(4):53-54.
[2]刘梦飞.大数据背景下计算机网络信息安全风险及防护
措施[J].现代工业经济和信息化,2017(21):59-61.[3]钮梦宁.大数据时代计算机网络信息安全与防护措施分
析[J].今日财富(中国知识产权),2019(3):136.[4]郭军.大数据背景下网络信息安全保障策略初探[J].
科技传播,2019(11):89-90.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论