基于JavaCV的人脸识别程序
2019-03-25汤文俊彭立席博文
汤文俊 彭立 席博文
【摘 要】OpenCV是一个用C++语言编写的计算机视觉库,在Java程序中可以通过JavaCV来访问OpenCV。本文介绍了一个基于JavaCV的人脸识别程序,该程序事先要对人脸识别器进行训练,之后就可以根据输入的人脸照片识别出相应的身份。
【关键词】JavaCV;OpenCV;人脸识别
中图分类号: TP391.41 文献标识码: A 文章编号: 2095-2457(2019)01-0003-002
DOI:10.19694/j.cnki.issn2095-2457.2019.01.002
0 引言
人臉识别是基于人的脸部特征信息进行身份识别的一种生物识别技术,目前已被广泛应用于各类具有身份识别功能的系统中,如考勤系统[1]。OpenCV是一个用C++语言编写的跨平台计算机视觉开源库,它实现了计算机视觉和图像处理方面很多较为完善的算法,并提供了几百个函数供用户使用,OpenCV已成为计算机视觉领域的首选开发库[2]。在Java程序中可以通过JavaCV来访问OpenCV。JavaCV是一组Jar包,它封装了各种常用计算机视觉库的接口,其中就有openCV[3]。本文介绍了一个基于JavaCV的人脸识别程序,该程序已被用于笔者开发的课堂移动考勤系统中。
1 程序介绍
该程序用Java语言编写,它借助JavaCV实现了人脸识别功能。程序用到了三个JavaCV提供的Jar包,分别是:javacpp.jar、javacv-windows-x86.jar、javacv.jar。
为了确保人脸识别的准确性,程序事先要用大量的人脸照片对人脸识别器进行训练,该项工作分为两步进行。首先,程序对origin_photo目录中存放的原始照片进行人脸检测,并将检测出的人脸以照片的形式存放于train_photo目录;之后,程序用train_photo目录中的照片对人脸识别器进行训练。在这两个目录中,照片名的格式为:分类号_编号。其中,分类号用来代表一个人的身份,同一个人的分类号相同;编号用来区分同一个人的不同照片,同一个人的不同照片有不同的编号。训练完人脸识别器之后,程序就可以根据输入的人脸照片识别出相应的分类号,即照片中人的身份。
2 方法说明
该程序包含了一个类FaceRecognition,类中定义了四个静态方法供外界调用,分别是:detectFace、detectFaceAndSave、trainFaceRecognizer、recognizeFace。要训练人脸识别器,只需要调用trainFaceRecognizer方法即可;训练好人脸识别器后,调用recognizeFace方法就可进行人脸识别。
3 结语
OpenCV是一个用C++语言编写的计算机视觉库,在Java程序中可以通过JavaCV来访问OpenCV。本文介绍了一个基于JavaCV的人脸识别程序,该程序小巧、实用,对开发与人脸识别相关的Java应用具有一定的参考价值。
【参考文献】
[1]360百科.人脸识别[EB/OL].https://baike.so.com/doc/5431092-5669384.html.
[2]毛星云,冷雪飞,王碧辉等.OpenCV3编程入门[M].电子工业出版社,2015.
[3]开源中国.Java视觉处理库JavaCV[EB/OL].https://www.oschina.net/p/javacv.