基於opencv和QT的人臉(人眼)檢測程式

2021-07-11 08:25:00 字數 1928 閱讀 1524

qt和

opencv

的攝像頭(本地)讀取並輸出程式

#include "detectanddisplay.h"

void detectanddisplay( mat &frame)

std::vecto***ces;//用於儲存檢測結果的向量

mat frame_gray;

cvtcolor( frame, frame_gray, cv_bgr2gray );//轉換成灰度圖

equalizehist( frame_gray, frame_gray );//直方圖均值化

face_cascade.detectmultiscale( frame_gray, faces, 1.1, 2, 0|cv_haar_scale_image, size(30, 30) );//用於檢測人眼的函式

//畫方框

for( int i = 0; i < faces.size(); i++ )

//imshow( window_name, frame );

}

函式首先使用cascadeclassifier類建立乙個分類器,然後匯入opencv已經訓練好的資料樣本進行分類,並將結果存入vector

faces向量中。需要注意的是,"haarcascade_mcs_eyepair_big.xml"檔案在opencv中的路徑為\opencv\sources\data\haarcascades,執行時需要將該檔案放到該項目的debug資料夾中。opencv自帶了多種已經訓練好的人臉特徵資料,可以選擇自己需要的檔案進行替換,如圖一。本文選擇的分類器是人眼雙目檢測分類器。

關於face_cascade.detectmultiscale的引數,如下所示

對不同大小的輸入影象進行物體識別,並返回乙個識別到的物體的矩陣列表。

c++:

void 

cascadeclassifier::

detectmultiscale

(constmat&image, vector&objects,doublescalefactor=1.1,intminneighbors=3, intflags=0,sizeminsize=size(), sizemaxsize=size())

引數

·image– 需要檢測的 cv_8u 輸入矩陣。

·objects– 輸出vector載體容器用於儲存被識別的物體矩陣。

·scalefactor– 指定每張的縮小比例的引數。

·minneighbors– 指定每個候選矩陣至少包含的鄰近元素個數。

·flags– 與舊版級聯分類器模型函式cvhaardetectobjects的flags相同. 此引數不被用於新版模型。

·minsize– 最小可能的物件的大小,小於的物件將被忽略。

·maxsize– 最大可能的物件的大小,大於的物件將被忽略。

該函式必須對灰度影象進行處理,關於灰度轉換函式和直方圖灰度化函式,可以在網上找到大量資料,這裡就不詳細介紹了。

最終的實際檢測結果如圖二。

圖二

基於opencv的人臉識別

1前言參考的是 這篇用的是dlib的對齊還加了mask。本文方法 人臉檢測 shiqiyu libfacedetection opencv提取ptr類 2 facedetect.h include include include include include facedetect dll.h us...

基於Opencv的人臉識別

要進行人臉的識別的訓練,首先我們要對openv中人臉識別類facerecognizer要有乙個了解,可以參考這個部落格對facerecognizer 有乙個了解 這個部落格對人臉的訓練解釋的很好,具體怎麼訓練可以閱讀這個部落格。關於人臉識別 我們有一下兩個步驟 1.利用pca變換的人臉識別,對人臉進...

基於Opencv的人臉識別

當在閱讀書籍opencv3時,偶遇人臉識別這一概念,通過網上查閱得知人臉識別是生物特徵識別的最新應用。在此書籍引導下,寫了乙個最基本的人臉識別 期間有乙個問題需要注意,再往工程目錄匯入xml檔案是注意不要導錯,應該是這兩個haarcascade frontalface alt.xml和haarcas...