最近在做毕业设计,被大二接的一个项目给坑了,导致毕业设计要做一个移动端人脸识别考勤系统,而且人脸识别还不能直接用Face++之类的公司提供的接口,从OpenCV到JavaCV折腾了一大圈,终于把核心功能实现了,记录一下过程。
人脸识别包含人脸检测+人脸识别两个部分,人脸检测可以用已经训练好的分类器进行检测,也可以自己用人脸库训练分类器进行检测(比如 ORL人脸库 ),对于人脸检测过程中获取到的人脸,利用算法提取特征并保存,如果该人脸特征已经保存过,则通过对比可以得知人脸身份,其中还涉及到图像的处理(如灰度化等),这里不做详细介绍。
最开始从OpenCV入手,只搞清楚了人脸识别的整个流程,但在Android上的具体实现,对于我这样一个从来没接触过Android和人脸识别的人来说还是非常有难度。幸运的是,JavaCV官方给了一个非常好的例子,我可以在其基础上进行修改,实现自己需要的功能,项目地址可见 javacv-android-recognize
下载javacv-android-recognize可以用 DownGit ,输入github地址即可下载项目,用Android Studio打开项目之前记得修改gradle-wrapper.properties版本,否则很容易卡在building Gradle project,由于项目比较新,所以一般情况下都可以顺利运行,界面如下图
点击TAKE PHOTO可以对未训练的人脸进行图像提取,提取25张后,点击START