【C++】FaceRecognition

人脸识别(1)——基于Opencv+vs2012的人脸检测

1.环境配置(博主环境):系统环境:win7旗舰 + Visual Studio 2012 + opencv2.4.9
博主的经历比较悲催,刚开始想在ARM11架构的OK6410上实现人脸检测的功能,很遗憾,在历经长时间的失败之后终于无法坚持下去而放弃,询问了一下实验室老师意见,建议还是先在PC上实现人脸识别的全部过程,然后还有余力的话可以尝试在cotex-a9上试一试。硬件环境搭建之操蛋,不堪回首的血泪史……
好了,言归正传,首先介绍一下博主本人的环境配置,win7 Ultimate+VS2012+opencv2.4.9,为什么标的这么仔细呢?博主实在是被前期在Ubuntu12.04,14.04,federal9,redhat系统下搭建环境对版本要求之苛刻所惊怕(PS:博主渣渣,大牛路过请无视……),俨然“一朝被蛇咬十年怕井绳”,环境配置的链接博主放下面(PS:建议参考的朋友们注意细节,自己也可以多找几篇对比一下):
*【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置 [http://blog.csdn.net/poem_qianmo/article/details/19809337]

(http://blog.csdn.net/poem_qianmo/article/details/19809337%20%E7%8E%AF%E5%A2%83%E9%85%8D%E7%BD%AE)*
2.Opencv简介
这个一百度一大片,但是博主还是充当一回话唠吧,因为可能有的人懒得查。
● 全称:Open Source Computer Vision Library。
● 运行平台:跨平台计算机视觉库,可运行在Linux、Windows和Mac OS上
● 函数构成:由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
● 编写脚本:基于C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。(该库也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。这些语言的API接口函数可以通过在线文档获得。如今也提供对于C#,Ch, Ruby的支持。)

3.人脸识别流程
● 步骤一:人脸获取,预处理
不同的人脸图像都能通过摄像镜头采集下来,比如静态图像、动态图像、不同的位置、不同表情等方面都可以得到很好的采集。对于人脸的图像预处理是基于人脸检测结果,对图像进行处理并最终服务于特征提取的过程。
正文中图举例如下:
获取人脸输入

● 步骤二:特征提取
人脸图像特征提取:人脸识别系统可使用的特征通常分为视觉特征、像素统计特征、人脸图像变换系数特征、人脸图像代数特征等。特征提取的方法归纳起来分为两大类:一种是基于知识的表征方法;另外一种是基于代数特征或统计学习的表征方法。
正文中图举例如下:
特征提取

● 步骤三:匹配与识别
提取的人脸图像的特征数据与数据库中存储的特征模板进行搜索匹配,通过设定一个阈值,当相似度超过这一阈值,则把匹配得到的结果输出。人脸识别就是将待识别的人脸特征与已得到的人脸特征模板进行比较,根据相似程度对人脸的身份信息进行判断。
正文中图举例如下:
匹配在于之别识别

● 步骤三:输出结果
在对待识别的人脸与已得到的人脸特征模板进行比较,根据相似程度输出对人脸的身份信息进行判断结果。
正文中图举例如下:
输出结果

4.人脸检测(博主会后续更新人脸的采集、标准化、匹配、识别,代码正在测试之中)
● First : Opencv检测原理
OpenCV中有检测人脸的函数(该函数还可以检测一些其他物体), 甚至还包含一些预先训练好的物体识别文件。
所以利用这些现成的东西就可以很快做出一个人脸检测的程序。
主要步骤为:
① . 加载分类器。
用cvLoad函数读入xml格式的文件。文件在OpenCV安装目录下的“Opencv/sources/data/haarcascades/”路径下。
haarcascade_frontalface_atl.xml
haarcascade_frontalface_atl2.xml
haarcascade_lefteye_2splits.xml
haarcascade_righteye_2splits.xml
xml文件截图

 try {
     
              faceDetector.load("F:\\Program Files\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt2.xml"); 
         }
     catch (cv::Exception e) {
     }  

     if ( faceDetector.empty() )
     {
     
                 cerr << "ERROR: Couldn't load  Detector ";  
                 exit(1);  
     }

     try {
      
               eyeDetector1.load("F:\\Program Files\\opencv<
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值