草庐IT

毕设项目-基于人脸识别的高校课堂考勤微信小程序及系统

码字好累 2023-11-26 原文

基于人脸识别的高校课堂考勤微信小程序及系统

人脸识别、地图定位考勤微信小程序,调用百度云免费人脸识别API实现。

功能简介

教师学生信息管理,课堂考勤信息管理,人脸识别,地图打卡四大模块。

功能模块说明:

  • 注册登录:
    系统管理员、教师、学生
  • 个人信息:
    查看用户信息
  • 考勤发布:
    系统管理员和教师发布考勤,考勤地图位置、签到时间范围及签到说明。
  • 考勤打卡:
    学生用户必须按照老师发布的考勤要求,在一定的地图定位范围、签到时间内以及进行人脸识别打卡。
  • 考勤信息查询:
    教师用户可以查看到所发布考勤任务中,未打卡及已打卡的学生名单,方便教师记录学生平时成绩。管理员还拥有导出考勤数据为文件的功能。
  • 人脸识别:
    用户在注册后必须上传本人的真实图片,与用户考勤打卡时摄像头拍摄的人脸照片进行识别比对。
  • 地图打卡:
    学生根据教师发布课堂考勤的定位范围内进行打卡签到。

功能实现

  • 地图定位功能:

    • 前端Map_wrap定义了地图信息,微信小程序使用uni.getSetting()方法获取用户当前设置,每次进入程序都会判断当前是否获得用户授权,如果没有授权则调起弹窗请求获得授权,如果获得授权,就直接获取当前地理位置。
    • 教师发布考勤信息时,前端使用uni.getLocation() API方法直接调用map组件打开地图,获取教师用户当前所在位置经纬度,然后根据经纬度获取详细地址,再把控件定在地图中心点,然后手动拖动地图,从而实现手动选择定位地址的功能,最后前端将获取到的地址信息传递至后端处理保存于数据库。
    • 学生打卡考勤时,同样是uni.getLocation() API方法获取学生用户当前真实定位信息,根据经纬度和通过distance()方法(计算两点之间距离)来计算真实定位与考勤信息里的地址位置的直线距离,若学生用户真实位置离考勤定位点距离超过200米,则拒绝打卡请求。
  • 人脸识别功能:

    • 本系统采用的人脸识别功能是基于百度AI的人脸识别库而实现的,是对输入的人脸静态图像或视频流中采集的人脸图像,与数据库中图像进行人脸特征点信息对比,计算出相似度进行判断,从而达到人脸识别的目的。
      整体算法分为三个步骤:
      1. 根据百度Oauth的ClientCredenTIals授权方式,获取到的AppID、API Key(client_id)和Secret Key(client_secret)是作为本系统人脸识别功能的API接口。再通过API key和Secret Key获得参数accessToken。
      2. 调用百度AI平台提供的API函数,根据提供的图片的网络地址及base64编码,在人脸特征库得到的面部特征值face_token及json数组后返回。
      3. 再由面部特征值得出两张图片的相似度分数score,score=eval(response.text)[‘result’][‘score’],若相似度得分超过80,则说明是同一人的可能性极大。

效果图

  • 教师学生端微信小程序

    • 登录注册

  • 考勤模块



  • 地图打卡

  • 人脸识别

  • 系统管理员端

相关资源

文档: 毕业设计任务书(https://download.csdn.net/download/cheese0408/87530355)

有关毕设项目-基于人脸识别的高校课堂考勤微信小程序及系统的更多相关文章

  1. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  2. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  3. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

  4. Ruby 从大范围中获取第 n 个项目 - 2

    假设我有这个范围:("aaaaa".."zzzzz")如何在不事先/每次生成整个项目的情况下从范围中获取第N个项目? 最佳答案 一种快速简便的方法:("aaaaa".."zzzzz").first(42).last#==>"aaabp"如果出于某种原因你不得不一遍又一遍地这样做,或者如果你需要避免为前N个元素构建中间数组,你可以这样写:moduleEnumerabledefskip(n)returnto_enum:skip,nunlessblock_given?each_with_indexdo|item,index|yieldit

  5. 报告回顾丨模型进化狂飙,DetectGPT能否识别最新模型生成结果? - 2

    导读语言模型给我们的生产生活带来了极大便利,但同时不少人也利用他们从事作弊工作。如何规避这些难辨真伪的文字所产生的负面影响也成为一大难题。在3月9日智源Live第33期活动「DetectGPT:判断文本是否为机器生成的工具」中,主讲人Eric为我们讲解了DetectGPT工作背后的思路——一种基于概率曲率检测的用于检测模型生成文本的工具,它可以帮助我们更好地分辨文章的来源和可信度,对保护信息真实、防止欺诈等方面具有重要意义。本次报告主要围绕其功能,实现和效果等展开。(文末点击“阅读原文”,查看活动回放。)Ericmitchell斯坦福大学计算机系四年级博士生,由ChelseaFinn和Chri

  6. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  7. [Vuforia]二.3D物体识别 - 2

    之前说过10之后的版本没有3dScan了,所以还是9.8的版本或者之前更早的版本。 3d物体扫描需要先下载扫描的APK进行扫面。首先要在手机上装一个扫描程序,扫描现实中的三维物体,然后上传高通官网,在下载成UnityPackage类型让Unity能够使用这个扫描程序可以从高通官网上进行下载,是一个安卓程序。点到Tools往下滑,找到VuforiaObjectScanner下载后解压数据线连接手机,将apk文件拷入手机安装然后刚才解压文件中的Media文件夹打开,两个PDF图打印第一张A4-ObjectScanningTarget.pdf,主要是用来辅助扫描的。好了,接下来就是扫描三维物体。将瓶

  8. 基于C#实现简易绘图工具【100010177】 - 2

    C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.

  9. ruby-on-rails - 在 heroku 的 .fonts 文件夹中包含自定义字体,似乎无法识别它们 - 2

    Heroku支持人员告诉我,为了在我的Web应用程序中使用自定义字体(未安装在系统中,您可以在bash控制台中使用fc-list查看已安装的字体)我必须部署一个包含所有字体的.fonts文件夹里面的字体。问题是我不知道该怎么做。我的意思是,我不知道文件名是否必须遵循heroku的任何特殊模式,或者我必须在我的代码中做一些事情来考虑这种字体,或者如果我将它包含在文件夹中它是自动的......事实是,我尝试以不同的方式更改字体的文件名,但根本没有使用该字体。为了提供更多详细信息,我们使用字体的过程是将PDF转换为图像,更具体地说,使用rghostgem。并且最终图像根本不使用自定义字体。在

  10. 微信小程序通过字典表匹配对应数据 - 2

    前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立

随机推荐