• 大小: 679KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: 其他
  • 标签: 人脸识别  OpenCV  

资源简介

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.embed.manifest

     文件        472  2014-11-29 16:37  FaceRec_Opencv_PCA\Debug\FaceRec_Opencv.exe.embed.manifest.res

     文件        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\link-cvtres.read.1.tlog

     文件          2  2014-11-29 16:37  FaceRec_Opencv_PCA\Debug\link-cvtres.write.1.tlog

     文件          2  2014-11-29 16:37  FaceRec_Opencv_PCA\Debug\link.24244-cvtres.read.1.tlog

     文件          2  2014-11-29 16:37  FaceRec_Opencv_PCA\Debug\link.24244-cvtres.write.1.tlog

     文件          2  2014-11-29 16:37  FaceRec_Opencv_PCA\Debug\link.24244.read.1.tlog

     文件          2  2014-11-29 16:37  FaceRec_Opencv_PCA\Debug\link.24244.write.1.tlog

     文件       2176  2014-11-29 16:37  FaceRec_Opencv_PCA\Debug\link.command.1.tlog

     文件       5202  2014-11-29 16:37  FaceRec_Opencv_PCA\Debug\link.read.1.tlog

     文件        868  2014-11-29 16:37  FaceRec_Opencv_PCA\Debug\link.write.1.tlog

     文件        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.xml

............此处省略25个文件信息

评论

共有 条评论