首先说明,本人也像大家一样,新手。

都是网上找博客跟着人家边学边做,对人脸识别所知甚少。

网上学习了一段时间后,对人脸识别的实现,所知的大概如下:




需安装以下环境: opencv-3.2.0 + opencv_+contrib-3.2.0




一、数据准备---采集人脸图像并预处理,建立自己的人脸库


        所谓的人脸识别,用什么作判断的依据?就是用现在得到的人脸图像与原有的多个人脸图像进行匹配判断,现得到的人脸图片一般为摄像头实时采集的图像,也可为一张图片;原有的呢,从哪里来?当然要识别之前收集好。因此,数据准备这一步是基础,建立一个人脸库是第一步。

        如何采集人脸?何种方式?


        当时是写段小程序啦。这个小程序的功能:

1、能自动检测人脸,并能框出人脸部分;

2、实现一键拍照,拍下人脸照,条件是检测到人脸的时候才能拍,无人脸就忽略;

3、对拍下的人脸照,抠出人脸部分写成图片文件,并自动按编号命名,放置于指定文件夹。




以上采集人脸照完毕,另需手动辅助一下:

创建一个人脸库文件夹,此文件夹下放入多个人的人脸照,每个人脸照都要用一个文件夹装好,并按规则命名。




二、模型训练---对收集的人脸数据进行训练

准备好人脸库之后,就要对人脸库进行模型训练了。

首先,要准备一个csv文件,这个文件有何用?


        训练的时候,需要读取人脸库中每个人的照片及相应的标签(标签相当于每个人脸的ID号,各不相同)。csv文件就是用来指引训练读取照片及标签的,告诉它A的人脸照在哪,标签是什么,B的在哪多少。。。当然,csv会有它特定的格式,不能乱写的。

        csv文件怎么写?当然是写段小程序自动化了。后续提供。


        有了csv文件,模型训练程序就可如愿读取所需数据了。模型训练,目的是得到一个xml文件,人脸识别要加载此文件,依照此文件进行识别。





三、人脸识别---打开摄像头(或人脸图片),进行识别

由模型训练得到的xml文件,在此就派上用场了。

首先调用摄像头采用图像,加载人脸检测器、人脸模型xml文件,检测人脸,将人脸与模型进行匹配识别,输出识别结果。




大致的人脸识别实现流程就是这样了。有空还是要多看官方文档,帮助很大。

人脸识别官方教程文档: https://docs.opencv.org/3.2.0/da/d60/tutorial_face_main.html


另提供一篇网友翻译中文版: http://www.cnblogs.com/guoming0000/archive/2012/09/27/2706019.html

后面,会对每一步分别进行实现,敬请期待。