您好, 访客   登录/注册

基于uni-app的人脸识别签到APP

来源:用户上传      作者:

  【摘要】本项目是一个基于uni-app的签到app。项目在百度地图的基础上,将百度AI平台的人脸识别SDK内置于app上,实现人脸的采集和认证,从而实现快速准确的签到。
  【关键词】人脸识别  签到  认证
  一、引言
  众所周知,课堂签到是高校老师普遍头疼的问题之一,由于传统签到方式的局限性,传统签到方式准确性普遍不高,本项目采用人脸识别签到技术,实现快速准确的签到。
  同时,本项目采用uni-app框架代替传统的android应用开发,uni-app是一个使用Vue.js开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台,对于开发者而言,使用uni-app使得app的开发更加简单高效。
  二、主要功能模块
  (一)地图定位识别模块
  (1)高德地图定位。高德地图定位,主要依靠高德地图提供的Android定位sdk来实现。其提供了GPS定位,基站定位和WIFI定位三种不同的定位模式。
  三种定位模式的优缺点如下所示:
  GPS定位:根据设备GPS芯片和GPS卫星实现定位,GPS定位在室内是不可以使用的。GPS定位精度与芯片以及实际使用环境有关,一般情况下,GPS定位精度在10m左右;
  基站定位:根据设备获取的基站信息实现定位,基站定位精度一般不受使用环境影响,主要和基站的覆盖半径有关。百度的基站定位服务精度目前在200m左右;
  Wi-Fi定位:根据设备获取的Wi-Fi的信息实现定位,Wi-Fi定位精度一般不受使用环境影响,主要和Wi-Fii半径、Wi-Fi分布密度有关。
  本系统为保证定位的准确性,会根据用户所在位置的信号强度以及用户手机的剩余电量等属性进行综合判断,切换不同的定位模式,以达到更好的定位效果。
  切换算法的实现方案如下所示:
  在户外且手机电量充足的情况下优先使用gps定位,保证定位的准确性。在基站的覆盖范围内优先使用基站定位。在室内时,使用WIFI定位,提升位置信息的准确度。
  (2)有效区域设定。此模块为管理员提供在地图上设定有效区域的功能。即管理员可以在本系统提供的地图上划定一个范围,作为本系统的签到有效区域。本系统提供了智能区域推荐和记忆常用区域的两个特色功能。即将常用的区域设定为模块,如果管理员不想手动划分有效范围,可以通过点击智能生成的区域模块,自动生成有效范围,实现区域的智能选择。此外,为了进一步减小管理员的操作难度,系统还增加记忆管理员常用的设定区域的功能,对于常用的区域,管理员能够直接调用,无需重新划分。
  (3)目标位置导航。本系统的管理员账户可以创建自己的管理组,管理员需要将目标签到群体加入到自己的管理组当中。在管理员设定完有效区域后。已经加入到管理组的成员可以在本系统上看到目标区域的位置信息,并且会自动生成推荐路线,方便用户更快的到达管理员设定的有效区域。
  (二)人脸识别签到模块
  (1)人脸采集。人脸采集有人脸检测,人脸跟踪,人脸关键点采集三个关键功能。用户在使用本系统进行签到时,系统会调用用户手机的摄像头对人脸进行实时监测,并对当前检测到的人脸持续跟踪,动态定位人臉轮廓,并动态实时展示人脸的核心关键点,在人脸的检测及追踪过程中,完成人脸图片采集,并输出预设的人脸图片。
  (2)人脸库注册。系统服务器在接收在接收用户设备发来的预设图片后,会对人脸图片的姿态角度,遮挡,清晰度,光照条件等进行实时监测,符合质量条件的人脸图片才会被采集。此外,系统会给用户设定完成相关动作,以此判断目标是否为活体。只有通过质量检测和活体检测的人脸图片才会作为有效图片存储在人脸库中。
  (3)人脸搜索比对。在获得用户客户端发来的符合检测标准的人脸图片后,系统服务器会找到对应用户的人脸集合,将此图片与人脸集合中的每一张图片都进行比对,并给出相似度分值。通过对相似度分值进行大小分析,系统会给出人脸比对的结果,并以此作为人脸验证是否通过的标准。
  (三)考勤统计模块
  系统会对用户的签到情况进行统计和分析。管理员可以在系统上实时监测自己管理组成员的签到情况。此外,系统会对近一段时间的成员签到情况进行总体分析,给出分析结果和建议。方便管理员快速而又准确地掌握其管理组成员的签到情况。
  三、实现方法
  (一)前端部分
  前端部分采用uni-app开发,uni-app是以vue.js框架为基础的开发框架,开发者只需要编写一套代码,就能发布到不同端。vue是一套构建用户界面的渐进式框架,采用组件化开发,只需要把应用的各个模块拆分到一个个组件中,再分别写好各个组件的实现,整个应用就算完成了,开发效率极高。
  在数据传输部分,主要使用ajax技术进行前后台交互。
  在人脸采集部分,通过百度ai的人脸采集sdk采集到符合要求的人脸后,使用ajax传输到后台进行人脸比对,后台在比对后返回结果。
  (二)后台部分
  后台部分采用node.js语言,Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。而Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,express使得node.js的开发更为简单。
  在数据交互部分,使用express的router模块,对不同接口进行独立处理和响应。
  在数据管理部分,使用mongoose,一个在node.js异步环境下对mongodb进行便捷操作的对象模型工具,对mongodb数据库进行操作。
  (三)数据管理部分
  数据管理部分采用mongodb数据库,MongoDB使用JSON的变种BSON作为内部存储的格式和语法。针对MongoDB的操作都使用JSON风格语法,客户端提交或接收的数据都使用JSON形式来展现。相对于SQL来说,更加直观,容易理解和掌握。
  基金项目:课题资助:南昌航空大学创新创业教育课程培育项目《C语言程序设计》;南昌航空大学校级教改课题《C语言程序设计》课程融入思政元素的探索与实践。课题资助:南昌航空大学第14届“三小”课题。
转载注明来源:https://www.xzbu.com/2/view-15292853.htm