cout<<"train"<<endl;
model->train(images,labels);
inti,acc=0,predict_l;
for(i=0;i<testimages.size();i++)
{
predict_l=model->predict(testimages[i]);
if(predict_l!=testlabels[i])
{
cout<<"Anerrorinrecognition:sample"<<i+1<<",predict"<<
predict_l<<",groundtruth"<<testlabels[i]<<endl;
imshow("error1",testimages[i]);
waitKey();
}
else
acc++;
}
cout<<"RecognitionRate:"<<acc*1.0/testimages.size()<<endl;
returnmodel;
}
Recognization()输出分错的样本和正确率,最后返回建模结果Ptr<FaceRecognizer> model
主函数改为:
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;
//togray,normalizeandresize;loadtoimages,labels,testimages,testlabels
resizeandtogray(dir,K,images,labels,testimages,testlabels);
//recognition
Ptr<FaceRecognizer>model=Recognition(images,labels,testimages,testlabels);
char*dirmodel=newchar[256];
strcpy(dirmodel,dir);strcat(dirmodel,"model.out");
FILE*f=fopen(dirmodel,"w");
fwrite(model,sizeof(model),1,f);
system("pause");
return0;
}
最终结果:一个错分样本,正确率93.3%

文章所用代码打包链接:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-22609-17.html
毛主席的分析还是很透彻的
老成持重并不优于年轻热血