前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >人脸检测(一)——基于单文档的应用台程序

人脸检测(一)——基于单文档的应用台程序

作者头像
小小詹同学
发布2018-04-13 16:29:11
1.4K0
发布2018-04-13 16:29:11
举报
文章被收录于专栏:小詹同学

Opencv自带训练好的人脸模型(人脸的人眼、口等器官类似),此文基于vs2013建立应用台单文档程序,具体建立过程不予详细叙述,主要记录利用的Opencv自带的分类器和训练好的人脸模型。

一、编程前的准备

(1)Haar特征分类器

Haar特征分类器就是一个XML文件,该文件中会描述人体各个部位的Haar特征值。包括人脸、眼睛、嘴唇等等。

Haar特征分类器存放目录:OpenCV安装目录中的\data\ haarcascades目录下,例如:

  1. haarcascade_eye.xml
  2. haarcascade_eye_tree_eyeglasses.xml
  3. haarcascade_frontalface_alt.xml
  4. haarcascade_frontalface_alt_tree.xml
  5. haarcascade_frontalface_alt2.xml
  6. haarcascade_frontalface_default.xml
  7. haarcascade_fullbody.xml
  8. haarcascade_lefteye_2splits.xml
  9. haarcascade_lowerbody.xml
  10. haarcascade_mcs_eyepair_big.xml
  11. haarcascade_mcs_eyepair_small.xml
  12. haarcascade_mcs_leftear.xml

……

(详情见不同版本的data/ haarcascades目录下)

例如此次程序进行人脸识别,需要将分类器haarcascade_frontalface_alt2.xm复制到所建项目的可运行文件夹内

(2).对CascadeClassifier做初始化

cv::CascadeClassifier classifier;

classifier.load(“cascade.xml”); //这里的xml是训练得到的分类器

CascadeClassifier类中既有load也有read函数,二者是相同的,load将引用read函数

(3 )关于detectMultiScale()

void detectMultiScale

(

const Mat& image,

CV_OUT vector<Rect>& objects,

double scaleFactor = 1.1,

int minNeighbors = 3,

int flags = 0,

Size minSize = Size(),

Size maxSize = Size()

);

函数介绍:

参数1:image--待检测图片,一般为灰度图像加快检测速度;

参数2:objects--被检测物体的矩形框向量组; 参数3:scaleFactor--表示在前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%; 参数4:minNeighbors--表示构成检测目标的相邻矩形的最小个数(默认为3个)。 如果组成检测目标的小矩形的个数和小于 min_neighbors - 1 都会被排除。 如果min_neighbors 为 0, 则函数不做任何操作就返回所有的被检候选矩形框, 这种设定值一般用在用户自定义对检测结果的组合程序上; 参数5:flags--要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域,因此这些区域通常不会是人脸所在区域;

参数6、7:minSize和maxSize用来限制得到的目标区域的范围。

二、编程时的介绍

所编写程序的头文件包括:

#include <opencv2/core/core.hpp>

#include <opencv2/imgproc/imgproc.hpp>

#include <opencv2/opencv.hpp>

#include <vector>

#include <cstdio>

using namespace cv;

using namespace std;

笔者将人脸检测分为如下几个步骤:

(1)加载分类器:

(2)读取图片

(3)检测

(4)标记

(5)显示

具体程序实例如下:

三、编程后的展示

运行程序可得到待识别的原图和检测结果图以及显示共检测到的人脸个数:选取三组实验,其显示结果如图所示:

实验1:国民闺女

实验2:who?

实验3:可看过?

以上就是这一期内容,自己总结一遍确实加深了印象,cv之路漫长,希望自己好好学习,坚持下去,学会c++和python。。。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小小詹同学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
人脸识别
腾讯云神图·人脸识别(Face Recognition)基于腾讯优图强大的面部分析技术,提供包括人脸检测与分析、比对、搜索、验证、五官定位、活体检测等多种功能,为开发者和企业提供高性能高可用的人脸识别服务。 可应用于在线娱乐、在线身份认证等多种应用场景,充分满足各行业客户的人脸属性识别及用户身份确认等需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档