openCV中的人脸识别API

来源:互联网 发布:java path设置方法技巧 编辑:程序博客网 时间:2024/06/05 17:03


本文转自:http://blog.csdn.net/dan1900/article/details/26385129

1.建立人脸识别器

createEigenFaceRecognizer

C++: Ptr<FaceRecognizer> createEigenFaceRecognizer(intnum_components=0, double threshold=DBL_MAX)¶
Parameters:
  • num_components – The number of components (read: Eigenfaces) kept for this Prinicpal Component Analysis. As a hint: There’s no rule how many components (read: Eigenfaces) should be kept for good reconstruction capabilities. It is based on your input data, so experiment with the number. Keeping 80 components should almost always be sufficient.
  • threshold – The threshold applied in the prediciton.

createFisherFaceRecognizer

C++: Ptr<FaceRecognizer> createFisherFaceRecognizer(intnum_components=0, doublethreshold=DBL_MAX)
Parameters:
  • num_components – The number of components (read: Fisherfaces) kept for this Linear Discriminant Analysis with the Fisherfaces criterion. It’s useful to keep all components, that means the number of your classesc (read: subjects, persons you want to recognize). If you leave this at the default (0) or set it to a value less-equal0 or greater(c-1), it will be set to the correct number(c-1) automatically.
  • threshold – The threshold applied in the prediction. If the distance to the nearest neighbor is larger than the threshold, this method returns -1.

createLBPHFaceRecognizer

C++: Ptr<FaceRecognizer> createLBPHFaceRecognizer(int radius=1, int neighbors=8, int grid_x=8, intgrid_y=8, doublethreshold=DBL_MAX)
Parameters:
  • radius – The radius used for building the Circular Local Binary Pattern. The greater the radius, the
  • neighbors – The number of sample points to build a Circular Local Binary Pattern from. An appropriate value is to use `` 8`` sample points. Keep in mind: the more sample points you include, the higher the computational cost.
  • grid_x – The number of cells in the horizontal direction, 8 is a common value used in publications. The more cells, the finer the grid, the higher the dimensionality of the resulting feature vector.
  • grid_y – The number of cells in the vertical direction, 8 is a common value used in publications. The more cells, the finer the grid, the higher the dimensionality of the resulting feature vector.
  • threshold – The threshold applied in the prediction. If the distance to the nearest neighbor is larger than the threshold, this method returns -1.

 

2.训练

C++: void FaceRecognizer::train(InputArrayOfArrayssrc, InputArraylabels) = 0

Parameters:
  • src – The training images, that means the faces you want to learn. The data has to be given as avector<Mat>.
  • labels – The labels corresponding to the images have to be given either as avector<int> or a

 

3.预测

C++: int FaceRecognizer::predict(InputArraysrc) const = 0
C++: void FaceRecognizer::predict(InputArraysrc, int&label, double& confidence) const = 0

Predicts a label and associated confidence (e.g. distance) for a given input image.

Parameters:
  • src – Sample image to get a prediction from.
  • label – The predicted label for the given image.
  • confidence – Associated confidence (e.g. distance) for the predicted label.

简单应用:

[cpp] view plaincopyprint?在CODE上查看代码片派生到我的代码片
  1. int FR::FR_LBPH()  
  2. {  
  3.     if(trainImages.size()<=0)  
  4.     {  
  5.         cout<<"please read train data first!"<<endl;  
  6.         return 1;  
  7.     }  
  8.     Ptr<FaceRecognizer> model=createLBPHFaceRecognizer(2,8,10,14);  
  9.     model->train(trainImages,trainLabels);  
  10.     int plabel= -1;  
  11.     double predicted_confidence = 0.0;    
  12.     double correct=0;  
  13.     for(int i=0;i<testImages.size();i++)  
  14.     {  
  15.         model->predict(testImages[i],plabel,predicted_confidence);  
  16.         if(plabel==testLabels[i])  
  17.         {  
  18.             correct++;  
  19.         }  
  20.         else  
  21.         {  
  22.             cout<<"name:"<<testNames[i]<<" label:"<<testLabels[i]<<" plabel:"<<plabel<<endl;  
  23.         }  
  24.     }  
  25.     cout<<correct/testImages.size()<<endl;  
  26.     return 0;  
  27. }  


注意:包含头文件#include "opencv2/contrib/contrib.hpp"

0 0
原创粉丝点击