資源簡介
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? 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個文件信息
評論
共有 條評論