资源简介
Opencv人脸分类器训练以及人脸识别全过程项目,windows+OpenCV(配使用文档),vs2010项目工程。
![](http://www.nz998.com/pic/48568.jpg)
代码片段和文件信息
#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个文件信息
相关资源
- CANopen使用手册_埃斯顿
- OpenGL参考手册
- photoshop经典1000例
- ecshop微信支付含手机版ectouch
-
AN_BLE-SDKDH-C1_Teli
nk BLE SDK DeveloperHan - Apolipoprotein E4 Impairs in vivo Hippocampal
- 引力波是玻色-爱因斯坦凝聚物暗物质
- Fabrication and all-optical poling characteris
- ManageEngine_OpManager_12.3安装手册+管理员
- 连续hopfield神经网络解决TSP问题
- jcrop v0.9.12
- Qt Creator opengl实现四元数鼠标控制轨迹
- 一个人脸识别程序源码
- 使用OpenFileDialog打开文件对话框.rar
- Openssl给文件传输加密
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- WinForm属性编辑 propertyGrid示例 仿wind
- MFC读三维模型obj文件
- 基于OpenCV的数字识别468815
- 使用opencv去掉二值化图像中黑色面积
- openssl 简介(中文)
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- LDA 人脸识别
- FPGA开发-ChipScope教程
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- OPC插件OPC Core Components 2.00 SDK 2.20
- 自编用openGL实现3D分形树,分形山
评论
共有 条评论