要進行人臉的識別的訓練,首先我們要對openv中人臉識別類facerecognizer要有乙個了解, 可以參考這個部落格對facerecognizer 有乙個了解 這個部落格對人臉的訓練解釋的很好,具體怎麼訓練可以閱讀這個部落格。
關於人臉識別 我們有一下兩個步驟
1.利用pca變換的人臉識別,對人臉進行訓練。
2.讀取訓練出的檔案,並進行判別。
首先第一步是對人臉進行集中訓練,訓練成功後會生成乙個xml檔案。
下面是如何訓練的**:
#include
#include
#include
#include
#include
#include
#include
using
namespace cv;
using
namespace
std;
using
namespace face;
cascadeclassifier face_cascades;
void read_csv(const
string& filename, vector
& images, vector
& labels, char separator = ';')
string line, path, classlabel;
while (getline(file, line))//從文字檔案中讀取一行字元,未指定限定符預設限定符為「/n」
}}int main()
訓練好後就是對人臉進行識別
**如下:
#include
#include
#include
#include
#include
using
namespace cv;
using
namespace
std;
using
namespace face;
cascadeclassifier g_face_cascades;
rng g_rng(12345);
ptrmodel;
int predict(mat src_image);
void detectanddisplay(mat frame);
int main()
detectanddisplay(frame);
}return0;}
void detectanddisplay(mat frame)
else
equalizehist(frame_gray, frame_gray); //直方圖均衡化
//detectmultiscale函式中frame_gray表示的是要檢測的輸入影象為frame_gray,faces表示檢測到的人臉目標序列,1.1表示
//每次影象尺寸減小的比例為1.1,2表示每乙個目標至少要被檢測到3次才算是真的目標(因為周圍的畫素和不同的視窗大
//小都可以檢測到人臉),cv_haar_scale_image表示不是縮放分類器來檢測,而是縮放影象,size(30, 30)為目標的
//最小最大尺寸
g_face_cascades.detectmultiscale(frame_gray, faces, 1.1, 2, 0 | cv_haar_scale_image, size(30, 30));
mat* pimage_roi = new mat[faces.size()]; //定以陣列
string str;
for (int i = 0; i < faces.size(); i++)
scalar color = scalar(g_rng.uniform(0, 255), g_rng.uniform(0, 255), g_rng.uniform(0, 255));//所取的顏色任意值
rectangle(frame, point(faces[i].x, faces[i].y), point(faces[i].x + faces[i].width, faces[i].y + faces[i].height), color, 1, 8);//放入快取
puttext(frame, str, point(faces[i].x, faces[i].y), font_hershey_complex, 1, scalar(0, 0, 255));//新增文字
}delete pimage_roi;
imshow("人臉識別", frame);
waitkey(30);
}int predict(mat src_image) //識別
這個是實現的效果
之後我將他封裝成了乙個類,**就幾行搞定了,方便快捷。
封裝類的資料連線這裡寫鏈結內容
基於opencv的人臉識別
1前言參考的是 這篇用的是dlib的對齊還加了mask。本文方法 人臉檢測 shiqiyu libfacedetection opencv提取ptr類 2 facedetect.h include include include include include facedetect dll.h us...
基於Opencv的人臉識別
當在閱讀書籍opencv3時,偶遇人臉識別這一概念,通過網上查閱得知人臉識別是生物特徵識別的最新應用。在此書籍引導下,寫了乙個最基本的人臉識別 期間有乙個問題需要注意,再往工程目錄匯入xml檔案是注意不要導錯,應該是這兩個haarcascade frontalface alt.xml和haarcas...
使用C 語言,基於opencv的人臉識別
基於opencv的人臉識別,主要是用到了訓練好的haarcascade frontalface default.xml檔案,這是opencv自帶的開源庫檔案,只需要載入程序式之中即可。include include using namespace std using namespace cv 訓練檔...