【opencv】基于opencv2的人脸识别系统

    之前,曾写过一个较为完整的人脸识别小系统。开发环境为opencv2.4.9和VS2012,并加入了一个新模块cvui.h,用此模块为人脸识别系统写了一个简单界面。界面如下:

                    

                    

  此界面用到的元素比较简单,包含按钮、文本框、图片及文字。

本文章写作框架如下:

1. 人脸识别流程

                        

2.各部分功能:详见下文“各模块讲解”。

3.各部分中遇到的细节问题

     例如:

       CascadeClassifier cascade;//建立级联分类器

cascade.load("haarcascade_frontalface_alt2.xml"); // 加载训练好的 人脸检测器(.xml)

        cascade.detectMultiScale(frameGray,faces,1.2, 2,0 |  CV_HAAR_FIND_BIGGEST_OBJECT );

        haarcascade_frontalface_alt2.xml到底是什么东西?

4.本系统的缺陷,是否可提升

  (1)  人脸采集问题:人脸旋转-》矫正

(2)训练模型问题:更换更好的模型来训练-》深度学习

(3)样本格式问题:直接利用彩色图像会不会更好

(4)训练样本问题:人脸数据库数量不足,以及ORL是西方面孔,与我们东方面孔的差异。-》采集更多东方人脸,进行训练

(5)人脸数组:现在是只识别一个人,能否识别多个,可以

(6)自己训练人脸检测器haar_cascade

5.所涉及的算法及原理,详见下文各模块讲解。

6.具体代码请戳:http://blog.csdn.net/u012679707/article/details/79520299 基于opencv2的人脸识别系统(二)具体代码


各模块讲解

第一部分:主函数

main.c

系统主函数,包含参数初始化、ui界面的设置以及整体流程控制。


第二部分:人脸采集

capture.cpp

人脸采集模块,功能是从摄像头画面中检测出人脸,并将人脸图像(矩形)截取下来,保存到训练文件中。其中人脸检测的详细过程是,

第一步,建立级联分类器

CascadeClassifier cascade;//建立级联分类器

第二步,加载Haar级联分类器模型.xml

cascade.load("haarcascade_frontalface_alt2.xml");	// 加载训练好的 人脸检测器(.xml)

第三步,用加载好的级联分类器进行人脸检测,返回检测到的人脸数组faces

cascade.detectMultiScale(frameGray,faces,1.2, 2,0 |  CV_HAAR_FIND_BIGGEST_OBJECT );

流程图如下:

                    


这一模块中,有一个问题,haar是什么?haar.xml为什么可以做人脸检测模型?如何检测出人脸的?

首先,haar特征是一种特征提取的方法。其实,特征提取方法有很多种,比如说Haar特征,edgelet特征,shapelet特征,HOG特征,HOF特征,小波特征,边缘模板等等。

摘录自:http://blog.csdn.net/yang6464158/article/details/25103703(特征提取之——Haar特征

Haar分类器 = Haar-like特征 + 积分图方法 + AdaBoost +级联

Haar分类器算法的要点如下:

① 使用Haar-like特征做检测。

② 使用积分图(Integral Image)对Haar-like特征求值进行加速。

  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值