return;
}
cout<<"ProcessingsamplesinClass"<<i<<endl;
vector<char*>file_vec=statdir.BeginBrowseFilenames("*.*");
for(j=0;j<file_vec.size();j++)
{
IplImage*cur_img=cvLoadImage(file_vec[j],CV_LOAD_IMAGE_GRAYSCALE);
cvResize(cur_img,standard,CV_INTER_AREA);
Matcur_mat=cvarrToMat(standard,true),des_mat;
cv::normalize(cur_mat,des_mat,0,255,NORM_MINMAX,CV_8UC1);
cvSaveImage(file_vec[j],cvCloneImage(&(IplImage)des_mat));
if(j!=file_vec.size())
{
images.push_back(des_mat);
labels.push_back(i);
}
else
{
testimages.push_back(des_mat);
testlabels.push_back(i);
}
}
cout<<file_vec.size()<<"images."<<endl;
}
}
并在main中调用:
intmain()
{
CvCapture*capture=0;
Matframe,frameCopy,image;
stringinputName;
intmode;
chardir[256]="D:\\Courses\\CV\\Face_recognition\\pic\\";
//preprocess_trainingdata(dir,K);//face_detectionandextracttofile
vector<Mat>images,testimages;
vector<int>labels,testlabels;
resizeandtogray(dir,K,images,labels,testimages,testlabels);//togray,normalizeandresize
system("pause");
return0;
}
2. 训练
有了vector<Mat> images,testimages;vector<int> labels,testlabels; 可以开始训练了,我们采用EigenFaceRecognizer建模。
在Prehelper.cpp中加入函数
Ptr<FaceRecognizer> Recognition(vector<Mat> images, vector<int> labels,vector<Mat> testimages, vector<int> testlabels);
Ptr<FaceRecognizer>Recognition(vector<Mat>images,vector<int>labels,
vector<Mat>testimages,vector<int>testlabels)
{
Ptr<FaceRecognizer>model=createEigenFaceRecognizer(10);//10Principalcomponents
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-22609-16.html
你们没注意罢了