Opencv中的FaceRecognizer类
生活随笔
收集整理的這篇文章主要介紹了
Opencv中的FaceRecognizer类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
隨著Opencv庫的不斷完善,在opencv2.4.2中添加了contrib的相關內容,里面就包括了FaceRecognizer人臉識別類。
這個類的調用比較簡單,主要是:訓練和預測,分別對應著train函數和predict函數,還有對應著數據的加載和保存:save和load。
先來說說訓練的過程,train函數的兩個參數也很簡單,訓練的圖像組vector<Mat>和對應的標簽組vector<int>,
對于預測,有兩種調用,其中的參數有測試圖像、返回的標簽值和測試樣本和標簽樣本的相似性。返回的標簽值為-1,說明測試樣本在訓練集中無對應或距離較遠。這里用個FisherFace作為示例說明一下如何訓練和預測:
- vector<Mat>?images;??
- vector<int>?labels;??
- //?images?for?first?person??
- images.push_back(imread("person0/0.jpg",?CV_LOAD_IMAGE_GRAYSCALE));??
- labels.push_back(0);??
- images.push_back(imread("person0/1.jpg",?CV_LOAD_IMAGE_GRAYSCALE));??
- labels.push_back(0);??
- //?images?for?second?person??
- images.push_back(imread("person1/0.jpg",?CV_LOAD_IMAGE_GRAYSCALE));??
- labels.push_back(1);??
- images.push_back(imread("person1/1.jpg",?CV_LOAD_IMAGE_GRAYSCALE));??
- labels.push_back(1);??
- ??
- Ptr<FaceRecognizer>?model?=?createFisherFaceRecognizer();??
- model->train(images,?labels);??
- ??
- Mat?img?=?imread("person1/2.jpg",?CV_LOAD_IMAGE_GRAYSCALE);??
- int?predicted?=?model->predict(img);
可以把訓練好的模型通過save函數保存成一個文件,下次使用的時候只需load即可。
特征臉EigenFace、Fisher臉FisherFace、LBP直方圖LBPHFace,是目前支持的3種人臉識別的方案。分別調用函數createEigenFaceRecognizer、createFisherFaceRecognizer、createLBPHFaceRecognizer建立模型。
總結
以上是生活随笔為你收集整理的Opencv中的FaceRecognizer类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原创:纯正汉人是单眼皮,双眼皮是混血儿?
- 下一篇: 关于人脸识别数据库的几点介绍