OpenCV之识别自己的脸——C++源码放送

Posted CVPy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV之识别自己的脸——C++源码放送相关的知识,希望对你有一定的参考价值。

插播一条重要通知

在将近一年之前,我在自己的CSDN专栏《OpenCV实践之路》中连续发了三篇博客,完整地描述了基于OpenCV进行人脸识别的全过程。三篇都将近一万的阅读量和大量的评论的表明,人脸识别果然是大家在学习OpenCV过程中最感兴趣的课题之一。当然,也有可能是本科生毕设老师最感兴趣的课题之一。。。

由于当时写的时候是按照前后流程来的,所以源码比较分散。加之我想当然地认为,很多源码是之前博客中已经放出来的,可以一句带过。这导致了很多同学学习的时候很不方面。但是我由于重装系统,导致当初的源码遗失,也一直没有抽出时间去重新整理一下。这个清明节,没有出门,根据之前的博客基于当下最新的OpenCV3.2重新整理了一遍源码。现在放出来以飨读者。

小小的区别

当然了,重新整理也不是那么简单的。因为OpenCV3.2人脸识别的内容也是有些小变动。所以现在的代码跟原来的三篇博客仍然是统一的,但是有一些细节不同。

1. 自动拍照

之前采集自己的图像的时候,程序设定是运行之后按'p'键拍照并保存图像,然后需要自己手动的去把图像大小转化为跟ORL人脸数据库中的图片大小一样。

现在一切自动,只需要运行即可拍照,变化尺寸,并保存。默认设定拍10张照片,与ORL人脸数据库一致。

2. Python脚本生成at.txt

当时写博客的时候还不会用Python,所以生成的at.txt并不是s1文件夹对应的label就是1,s2就对应2。而是比较混乱的。谁是谁需要自己去记忆。

经过修改后的Python脚本可以是文件夹可label完美对应起来了

3. 训练代码

训练人脸识别模型的代码部分有些改动,主要是因为OpenCV的变动。

  • 头文件和命名空间需要各加一句:

    #include<opencv2\face.hpp>

    using namespace cv::face;

  • 创建模型部分的改变,原来的代码是:

    Ptr<FaceRecognizer> model = createEigenFaceRecognizer();

    Ptr<FaceRecognizer> model1 = createFisherFaceRecognizer();

    Ptr<FaceRecognizer> model2 = createLBPHFaceRecognizer();

    现在改为:

Ptr<BasicFaceRecognizer> model = createEigenFaceRecognizer();

Ptr<BasicFaceRecognizer> model1 = createFisherFaceRecognizer();

Ptr<LBPHFaceRecognizer> model2 = createLBPHFaceRecognizer();

其余部分没有太大变化。

下载办法

源码已经分别上传到Github、百度网盘。其中github由于大小限制,不含我训练好的模型。如果下方链接看不到,可以回复“人脸识别源码”获取下载链接。

Github:`https://github.com/LiuXiaolong19920720/recognise-your-own-face

百度网盘:链接:http://pan.baidu.com/s/1nuPFthR 密码:slh8



解锁更多精彩内容

分享独家原创内容

不仅限于OpenCV和Python


以上是关于OpenCV之识别自己的脸——C++源码放送的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV入门初探---拿走就能用的 人脸检测小项目 源码分析

C++中文车牌识别检测系统源码

OpenCV C++案例实战十《车牌号识别》

C++ | PaddleOCR+OpenCV实现文字识别步骤与代码演示

图像识别入门 VS2017+Opencv的安装

OpenCV C++案例实战三十《中文点选验证码识别》