资源简介
Opencv人脸分类器训练以及人脸识别全过程项目,windows+OpenCV(配使用文档),vs2010项目工程。
代码片段和文件信息
#include
#include
#include “cv.h“
#include “cvaux.h“
#include “highgui.h“
using namespace cv;
using namespace std;
//globle variables
int nTrainFaces = 0; // number of trainning images
int nEigens = 0; // number of eigenvalues
IplImage** faceImgArr = 0; // array of face images
CvMat* personNumTruthMat = 0; // array of person numbers
IplImage* pAvgTrainImg = 0; // the average image
IplImage** eigenVectArr = 0; // eigenvectors
CvMat* eigenValMat = 0; // eigenvalues
CvMat* projectedTrainFaceMat = 0; // projected training faces
//// Function prototypes
void learn();
void recognize();
void doPCA();
void storeTrainingData();
int loadTrainingData(CvMat** pTrainPersonNumMat);
int findNearestNeighbor(float* projectedTestFace);
int loadFaceImgArray(char* filename);
void printUsage();
int main( int argc char** argv )
{
if((argc != 2) && (argc != 3)){
printUsage();
return -1;
}
if( !strcmp(argv[1] “train“ )){
cout << “entre strfcmp! learn“< learn();
} else if( !strcmp(argv[1] “test“) ){
cout << “entre strfcmp! recognize“< recognize();
} else {
printf(“Unknown command: %s\n“ argv[1]);
}
return 0;
}
void printUsage(){
printf(“Usage: eigenface \n“
“ Valid commands are\n“
“ train\n“
“ test\n“
);
}
void learn(){
int i;
// load training data
nTrainFaces = loadFaceImgArray(“train.txt“);
if( nTrainFaces < 2){
fprintf(
stderr
“Need 2 or more training faces\n“
“Input file contains only %d\n“
nTrainFaces
);
return;
}
// do PCA on the training faces
doPCA();
// project the training images onto the PCA subspace
projectedTrainFaceMat = cvCreateMat(nTrainFaces nEigens CV_32FC1);
for(i = 0; i < nTrainFaces; i ++){
cvEigenDecomposite(
faceImgArr[i]
nEigens
eigenVectArr
0 0
pAvgTrainImg
projectedTrainFaceMat->data.fl + i*nEigens
);
}
// store the recognition data as an xml file
storeTrainingData();
}
int loadFaceImgArray(char* filename){
FILE* imgListFile = 0;
char imgFilename[512];
int iFace nFaces = 0;
// open the input file
imgListFile = fopen(filename “r“);
// count the number of faces
while( fgets(imgFilename 512 imgListFile) ) ++ nFaces;
rewind(imgListFile);
// allocate the face-image array and person number matrix
faceImgArr = (IplImage **)cvAlloc( nFaces*sizeof(IplImage *) );
personNumTruthMat = cvCreateMat( 1 nFaces CV_32SC1 );
// store the face images in an array
for(iFace=0; iFace //read person number and name of image file
fscanf(imgListFile “%d %s“ personNumTruthMat->data.i+iFace imgFilename);
// load the face image
faceImgArr[iFace] = cvLoadImage(imgFilename CV_LOAD_IMAGE_GRAYSCALE);
}
fclose(imgListFile);
return nFaces;
}
void doPCA(){
int i;
CvTermCriteria calcLimit;
CvSize faceImgSize;
// set the number of eigenvalues to use
nEigens = nTrainFaces - 1;
// allocate the eigenvector images
faceImgSize.width = faceImgAr
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 710 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\cl.command.1.tlog
文件 33708 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\CL.read.1.tlog
文件 408 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\CL.write.1.tlog
文件 158762 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\faceRecOpencv.obj
文件 2143 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\FaceRec_Opencv.Build.CppClean.log
文件 406 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\FaceRec_Opencv.exe.em
文件 472 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\FaceRec_Opencv.exe.em
文件 381 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\FaceRec_Opencv.exe.intermediate.manifest
文件 65 2014-11-29 16:42 FaceRec_Opencv_PCA\Debug\FaceRec_Opencv.lastbuildstate
文件 843 2014-11-29 16:42 FaceRec_Opencv_PCA\Debug\FaceRec_Opencv.log
文件 0 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\FaceRec_Opencv.write.1.tlog
文件 218 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\FaceRec_Opencv_manifest.rc
文件 2 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\li
文件 2 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\li
文件 2 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\li
文件 2 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\li
文件 2 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\li
文件 2 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\li
文件 2176 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\li
文件 5202 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\li
文件 868 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\li
文件 438 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\mt.command.1.tlog
文件 370 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\mt.read.1.tlog
文件 370 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\mt.write.1.tlog
文件 622 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\rc.command.1.tlog
文件 342 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\rc.read.1.tlog
文件 350 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\rc.write.1.tlog
文件 920576 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\vc100.idb
文件 1241088 2014-11-29 16:37 FaceRec_Opencv_PCA\Debug\vc100.pdb
文件 798676 2014-11-29 16:42 FaceRec_Opencv_PCA\facedata.xm
............此处省略25个文件信息
相关资源
- StockDesktop-v1.1
- ge VC opc server
- OptiX 155622H硬件介绍
- Stephen boyd convex optimization 视频及讲义
-
Openla
yers 3 地图框选 画多边形 获取 - opencv 鼠标框选 跟踪
- glut工具包,解决编译问题: 无法打
- gpops最优控制计算软件说明书
- PopupWindowDemo
- OpenStack 部署运维实战
- OPENGL视频教程从入门基础到精通
- 超全亚洲人脸数据集用于人脸识别
- OPC 基金组织最新Opc Server源码
- wtopcsvr.dll使用手册
- AMR-LBM-OpenMP-2D.rar
- 图像识别(13)——手势识别(1)—
- ecshop小京东微信支付,支付成功未跳
- hadoop2.7.2windows10编译后的bin目录文件
- OPCProxy.dll等相关支持库
- arcgis10.3.1正式版完整版包含desktop+se
- OpenGL绘制图形包含20多个基本
-
QGis地图插件openla
yers_plugin-2.0.0 - ubuntu下openmeetings的详细安装步骤
- opnet种子
- 用OPENGL做的空间探索程序.内有一个飞
- OPENGL做的太阳系五大行星的公转和自
- 小程序获取openid源代码
- convert_cascade
- openssh-6.6p1-1.x86_64.rpm
- iPod+Authentication+Coprocessor+Spec+2.0C+R1
评论
共有 条评论