溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Opencv LBPH人臉識別算法詳解

發(fā)布時間:2020-10-02 20:17:38 來源:腳本之家 閱讀:240 作者:東城青年 欄目:編程語言

簡要: 

LBPH(Local Binary PatternsHistograms)局部二進制編碼直方圖,建立在LBPH基礎之上的人臉識別法基本思想如下:首先以每個像素為中心,判斷與周圍像素灰度值大小關系,對其進行二進制編碼,從而獲得整幅圖像的LBP編碼圖像;再將LBP圖像分為個區(qū)域,獲取每個區(qū)域的LBP編碼直方圖,繼而得到整幅圖像的LBP編碼直方圖,通過比較不同人臉圖像LBP編碼直方圖達到人臉識別的目的,其優(yōu)點是不會受到光照、縮放、旋轉和平移的影響。

#include<opencv2\opencv.hpp>
#include<opencv2\face.hpp>
using namespace cv;
using namespace face;
using namespace std;
char win_title[40] = {};
 
int main(int arc, char** argv) { 
 //namedWindow("input",CV_WINDOW_AUTOSIZE);
 
 //讀入模型需要輸入的數據,用來訓練的圖像vector<Mat>images和標簽vector<int>labels
 string filename = string("path.txt");
 ifstream file(filename);
 if (!file) { printf("could not load file"); }
 vector<Mat>images;
 vector<int>labels;
 char separator = ';';
 string line,path, classlabel;
 while (getline(file,line)) {
 stringstream lines(line);
 getline(lines, path, separator);
 getline(lines, classlabel);
 //printf("%d\n", atoi(classlabel.c_str()));
 images.push_back(imread(path, 0));
 labels.push_back(atoi(classlabel.c_str()));//atoi(ASCLL to int)將字符串轉換為整數型
 }
 int height = images[0].rows;
 int width = images[0].cols;
 printf("height:%d,width:%d\n", height, width);
 //將最后一個樣本作為測試樣本
 Mat testSample = images[images.size() - 1];
 int testLabel = labels[labels.size() - 1];
 //刪除列表末尾的元素
 images.pop_back();
 labels.pop_back();
 
 //加載,訓練,預測
 Ptr<LBPHFaceRecognizer> model = LBPHFaceRecognizer::create();
 model->train(images, labels);
 int predictedLabel = model->predict(testSample);
 printf("actual label:%d,predict label :%d\n", testLabel, predictedLabel);
 
 int radius = model->getRadius();
 int neibs = model->getNeighbors();
 int grad_x = model->getGridX();
 int grad_y = model->getGridY();
 double t = model->getThreshold();
 printf("radius:%d\n", radius);
 printf("neibs:%d\n", neibs);
 printf("grad_x:%d\n", grad_x);
 printf("grad_y:%d\n", grad_y);
 printf("threshold:%.2f\n", t);
 
 waitKey(0);
 return 0;
}

Opencv LBPH人臉識別算法詳解

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI