Opencv中的FaceRecognizer类

来源:互联网 发布:淘宝等级在哪里查看 编辑:程序博客网 时间:2024/05/21 09:22

随着Opencv库的不断完善,在opencv2.4.2中添加了contrib的相关内容,里面就包括了FaceRecognizer人脸识别类。

这个类的调用比较简单,主要是:训练和预测,分别对应着train函数和predict函数,还有对应着数据的加载和保存:save和load。

先来说说训练的过程,train函数的两个参数也很简单,训练的图像组vector<Mat>和对应的标签组vector<int>

对于预测,有两种调用,其中的参数有测试图像、返回的标签值和测试样本和标签样本的相似性返回的标签值为-1,说明测试样本在训练集中无对应或距离较远。这里用个FisherFace作为示例说明一下如何训练和预测:


  1. vector<Mat> images;  
  2. vector<int> labels;  
  3. // images for first person  
  4. images.push_back(imread("person0/0.jpg", CV_LOAD_IMAGE_GRAYSCALE));  
  5. labels.push_back(0);  
  6. images.push_back(imread("person0/1.jpg", CV_LOAD_IMAGE_GRAYSCALE));  
  7. labels.push_back(0);  
  8. // images for second person  
  9. images.push_back(imread("person1/0.jpg", CV_LOAD_IMAGE_GRAYSCALE));  
  10. labels.push_back(1);  
  11. images.push_back(imread("person1/1.jpg", CV_LOAD_IMAGE_GRAYSCALE));  
  12. labels.push_back(1);  
  13.   
  14. Ptr<FaceRecognizer> model = createFisherFaceRecognizer();  
  15. model->train(images, labels);  
  16.   
  17. Mat img = imread("person1/2.jpg", CV_LOAD_IMAGE_GRAYSCALE);  
  18. int predicted = model->predict(img);

可以把训练好的模型通过save函数保存成一个文件,下次使用的时候只需load即可

特征脸EigenFace、Fisher脸FisherFace、LBP直方图LBPHFace,是目前支持的3种人脸识别的方案。分别调用函数createEigenFaceRecognizer、createFisherFaceRecognizer、createLBPHFaceRecognizer建立模型



0 0
原创粉丝点击