基於Opencv的人臉識別

2021-08-11 16:34:32 字數 2563 閱讀 6147

要進行人臉的識別的訓練,首先我們要對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 訓練檔...