基于OpenCV的人脸识别系统在学生考勤中的应用

发表时间:2021/4/6   来源:《科学与技术》2020年34期   作者:秦晓雨
[导读] 近年来,各大高校对于学生的平时成绩越来越重视
        秦晓雨
        (湖南师范大学 信息科学与工程学院 长沙410081)

        摘 要 近年来,各大高校对于学生的平时成绩越来越重视,最终的期末成绩更加注重于学生平时的表现,因此学生的日常考勤成为大学课堂中不可缺少的一部分。现在大部分院校仍然采用点名的方式来记录考勤,耗费时间长,而且容易弄虚作假。因此,本文通过使用教室门口的高清摄像头采集学生图像信息,通过OpenCV与Java语言编写的软件系统将学生面部信息与后台数据库中预存图像进行比对,从而完成对学生考勤的管理,通过这种方式既可以减轻老师的工作量,又可以提高考勤效率。
        关键词 OpenCV;人脸识别;考勤应用
        现如今对大学生的期末考核不仅仅凭期末试卷的分数一锤定音,更多的是看重学生平时的表现,考勤系统的完善日益重要。目前大部分院校的考勤仍采用人工点名的方式,不仅耗费时间长,而且容易弄虚作假,替人点到的行为常常发生。同时,教师人工点名归根到底还是由人来执行,部分教师迫于师生关系的压力,无法做到绝对严格的公平公正,使考勤结果不准确,导致考勤很难落到实处。因此,设计一个电子化的考勤系统尤为重要。现在,随着科学技术飞速发展,生物识别技术也日益成熟,由于指纹识别系统与虹膜识别系统价格比较昂贵,为每个教室都配备难以实现,而人脸具有明显的个体差异性,识别特征也相对明显,同时利用教室外已有的摄像头即可采集学生的面部信息,通过OpenCV的Haar特征分类器检测将学生面部信息与后台数据库中预存图像进行比对,将考勤结果上传至学生数据库,从而完成对学生考勤的管理。
1.系统总体设计方案
 
                                 图1
        基于OpenCV的学生考勤系统利用OpenCV技术和Java语言实现对学生考勤的管理,由注册阶段和考勤阶段两部分构成。注册阶段通过使用摄像头完成对学生面部图像的采集同时收集学生基本信息,进行特征提取后存入学生信息数据库中;考勤阶段由摄像头结合OpenCV的分类器实时识别,并将识别成功的图片保存到本地,将本地图片与学生信息数据库中的图片逐一匹配识别,若识别成功,即为打卡成功,把考勤结果存入数据库中,若匹配失败,则重新进行人脸检测,如图1所示。
2.核心技术运用
2.1人脸识别技术
        人脸识别技术主要是基于一个人的脸部特点,对于输入的各种人脸图像或者是视频流,首先需要判断是否有人脸,如果存在人脸,就会给出每一张脸的位置、大小和各种主要的面部器官。并依据这些信息,进一步地提取每个人脸中所需要包含的身份特点,并将其与目前已知的人脸进行对比,从而准确识别每个人脸的身份。
2.2 OpenCV技术
        OpenCV是一个基于BSD许可发行的高效而且轻量级的开源跨平台计算机视觉和机器学习软件库,可以运行在多种操作系统上。OpenCV用C++语言编写,具有C ++,Python,Java和MATLAB接口,主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令,如今也提供对于C#、Ch、Ruby、GO的支持。
3.主要功能模块
3.1人脸检测
        人脸检测使用OpenCV自带的人脸的Haar特征分类器,该分类器是一个XML文件,文件中描述人脸的Haar特征值。Haar分类器算法过程如下:
1)使用Haar-like特征做检测。
2)使用积分图加速Haar-like特征求值。
3)使用AdaBoost算法训练区分人脸和非人脸的强分类器。
4)使用筛选式级联级联强分类器。
3.1.1?Haar-like特征
        ?Haar-like特征分为三类:边界特征、线性特征和中心围绕特征,每类特征又各自包含四种、八种和两种式样的黑白矩形区域,将任意一种矩形放到人脸区域上,用白色区域的像素和减去黑色区域的像素和,得到的值称之为人脸特征值,这样做的目的是把人脸特征量化,以区分人脸和非人脸。
3.1.2AdaBost算法
1)算法思想:
        提高被前一轮弱分类器分类错误的样本的权值,降低分类正确的样本的权值;采用线性加权求和的方法,即误差率小的弱分类器拥有较大的权值,使其起到较大的作用,而误差率较大的弱分类器拥有较小的权值,从而起到较小的作用。
2)算法流程:
        步骤1.读入样本训练数据,初始化训练数据的权值分布

                                       

    

                图2

3.2人脸匹配识别
        使用OpenCV中的提供的compareHist()函数进行直方图比较,可以判断两张图的相似度,从而识别不同的人脸。直方图的比较方法有四种,分别是:相关比较(Correlation)、卡方比较(Chi-Square)、十字交叉性(Intersection)和巴氏距离(Bhattacvharyya distance)。
        compareHist()函数一共有三个参数,分别是输入图像、输出图像和比较方法。比较方法的取值的情况为上面的四种方法所代表的四个常量:相关比较 ( CV_COMP_CORREL )、卡方比较 ( CV_COMP_CHISQR )、十字交叉性( CV_COMP_INTERSECT )和巴式距离( CV_COMP_BHATTACHARYYA )。
        在本文中采用相关比较( CV_COMP_CORREL ),在相关比较中,相关系数越接近于1,两张图片相似度越高,越接近0,相似性越低。这里规定计算得到的相关系数大于0.72时判断为匹配,小于等于0.72时判断为不匹配。
4.系统实现
        通过编写代码,本文最终实现了基于OpenCV的人脸识别学生考勤应用系统,OpenCV视觉库中的Haar分类器的算法可以基本有效地正确检测出人脸,通过计算相关系数的方式进行人脸匹配识别准确率也较高。人脸检测如图3,模拟图像库如图4,匹配结果如图5。

                         
                          图5
5.结束语
        本文设计与实现了一个基于OpenCV的人脸识别在学生考勤中的应用系统,该系统实现了通过利用教室外已有的高清摄像头采集学生的面部信息,通过OpenCV自带的Haar分类器检测将学生面部信息与后台数据库中预存图像进行比对,将考勤结果上传至学生数据库,从而完成对学生考勤的管理。通过实验验证了应用此系统确实可以提高考勤的效率与准确性,大大减轻教师的工作量。但同时,本系统仍然具有一些使用局限性,例如OpenCV原有的检测分类器对于人脸数单一、背景简单、直立正脸等相对理想的条件下准确率较高,而对于光照条件恶劣、背景与人脸相近等条件下误检率较高,较高的误检率会增加了设备运行负担,后续研究可以通过训练专用的级联分类器配合更高清晰度的摄像头提高检测的准确性。
        
参考文献:
[1]孙志. 基于OpenCV的人脸识别算法实验平台研究与实现[D].吉林大学,2014.
[2]隋欣.基于OpenCV和Python的人脸识别系统在课堂考勤中的应用分析[J].科学技术创新,2019(34):104-105.
[3]鲁磊纪,周丽媛,赵小帆.基于Opencv的人脸检测及识别课堂点名系统设计与实现[J].电子制作,2019(12):87-88,42.
[4]陈凯文,文进宇,黄涛,乔波.基于OpenCV的人脸识别门禁系统的设计与实现[J].电脑与信息技术,2015,23(6):33-35.
投稿 打印文章 转寄朋友 留言编辑 收藏文章
  期刊推荐
1/1
转寄给朋友
朋友的昵称:
朋友的邮件地址:
您的昵称:
您的邮件地址:
邮件主题:
推荐理由:

写信给编辑
标题:
内容:
您的昵称:
您的邮件地址: