Opencv中的FaceRecognizer类
隨著Opencv庫的不斷完善,在opencv2.4.2中添加了contrib的相關(guān)內(nèi)容,里面就包括了FaceRecognizer人臉識別類。
這個類的調(diào)用比較簡單,主要是:訓(xùn)練和預(yù)測,分別對應(yīng)著train函數(shù)和predict函數(shù),還有對應(yīng)著數(shù)據(jù)的加載和保存:save和load。
先來說說訓(xùn)練的過程,train函數(shù)的兩個參數(shù)也很簡單,訓(xùn)練的圖像組vector<Mat>和對應(yīng)的標(biāo)簽組vector<int>,
對于預(yù)測,有兩種調(diào)用,其中的參數(shù)有測試圖像、返回的標(biāo)簽值和測試樣本和標(biāo)簽樣本的相似性。返回的標(biāo)簽值為-1,說明測試樣本在訓(xùn)練集中無對應(yīng)或距離較遠(yuǎn)。這里用個FisherFace作為示例說明一下如何訓(xùn)練和預(yù)測:
- 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);
可以把訓(xùn)練好的模型通過save函數(shù)保存成一個文件,下次使用的時候只需load即可。
特征臉EigenFace、Fisher臉FisherFace、LBP直方圖LBPHFace,是目前支持的3種人臉識別的方案。分別調(diào)用函數(shù)createEigenFaceRecognizer、createFisherFaceRecognizer、createLBPHFaceRecognizer建立模型。
總結(jié)
以上是生活随笔為你收集整理的Opencv中的FaceRecognizer类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 原创:纯正汉人是单眼皮,双眼皮是混血儿?
- 下一篇: 关于人脸识别数据库的几点介绍