==================================
参考文章:
[1]Joint Cascade Face Detection and Alignment(ECCV14)
[2]Face Alignment at 3000 FPS via Regressing Local Binary Features (CVPR14)
[3]Cascaded Pose Regression (CVPR10)
[4]Fast Keypoint Recognition in Ten Lines of Code
[5]女神的博文:
本文实现基于eigenface的人脸检测与识别。给定一个图像,进行以下步骤:
进行人脸检测,将检测出的人脸存入2
对2进行人脸建模
在测试集上进行recognition
环境:vs2010+opencv 2.4.6.0
特征:eigenface
Input:一个人脸,15个人,每人20个样本(左右)。
Output:人脸检测,并识别出每张检测到的人脸。
===============================
本文完成第一步,数据预处理:自动检测所有文件夹中每个sample中的人脸,作为训练数据。
Input:一个color文件夹,每个文件夹中有1~N这N个子文件夹,每个子文件夹内有n张包括第n类人的照片,如图。cvcircle

最终结果:

核心:face detection(detectAndDraw)
辅助:截图并保存部分图片(CutImg),文件夹内图片遍历(read_img),图片转换成相同大小(normalizeone)
括号内分别是函数名,下面分别给出代码及说明。
1. 遍历文件夹:CBrowseDir类和CStatDir类(具体见这篇),三个文件如下:
1.1 BrowseDir.h
1.2 BrowseDir.cpp
#include"BrowseDir.h"
#include"direct.h"
#include"string.h"
#include"io.h"
#include"stdio.h"
#include<vector>
#include<iostream>
usingnamespacestd;
CBrowseDir::CBrowseDir()
{
getcwd(m_szInitDir,_MAX_PATH);
intlen=strlen(m_szInitDir);
if(m_szInitDir[len-1]!='\\')
strcat(m_szInitDir,"\\");
}
boolCBrowseDir::SetInitDir(constchar*dir)
{
if(_fullpath(m_szInitDir,dir,_MAX_PATH)==NULL)
returnfalse;
if(_chdir(m_szInitDir)!=0)
returnfalse;
intlen=strlen(m_szInitDir);
if(m_szInitDir[len-1]!='\\')
strcat(m_szInitDir,"\\");
returntrue;
}
vector<char*>CBrowseDir::BeginBrowseFilenames(constchar*filespec)
{
ProcessDir(m_szInitDir,NULL);
returnGetDirFilenames(m_szInitDir,filespec);
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-22609-6.html
给自己一个追求新生的机会
不被发现达不到示威效果
老美没有牌了