該demo的基礎是之前的opencv人臉檢測以及v4l2攝像頭驅動程式,在此基礎上新增人臉識別功能,由於需要鑑別特定人臉,因此需要進行訓練生成xml格式的級聯分類器,然後載入此分類器即可實現特定人臉的識別。說明
本demo使用的是基於lbph的facerecongnizer,思路為首先構造lbphfacerecognizer,然後進行訓練並將訓練結果儲存以便下次使用,最後傳入影象進行鑑別,每張會對應乙個label,如果鑑別結果與某張吻合,就會返回該的下標,通過下標與label陣列即可確定識別結果,思路清晰,不過這種鑑別演算法已經是上古時代的了,以後打算使用神經網路實現人臉識別。
**
#include "facerecognize.h"
facerecognize::facerecognize()
void facerecognize::loadlbphstate()
void facerecognize::train()
void facerecognize::printdir(const
char *dir, int depth)
chdir(dir);
while((entry = readdir(dp)) != null)
else
}chdir("..");
closedir(dp);
}void facerecognize::getfilesname(string path)//獲取path目錄中的所有作為訓練資源
return frame;
}vector
facerecognize::facedetector(mat img)
return faces;
}void facerecognize::drawface(mat img, vector
faces)
}
OpenCV結合V4l2實現人臉檢測
之前簡答得實現了一下人臉檢測,不過使用的opencv自帶的攝像頭操作函式,然而那個並不能使用在嵌入式裝置上,為了通用性,我將讓opencv使用v4l2獲得的資料幀進行檢測。說明 v4l2其實並不難,只不過大家容易被網上那動輒幾百行的 唬住,那些 大多都是在檢錯,因為操作硬體這種事情出錯的概率確實很高...
V4L2程式設計
include include include include include include include include include include typedef struct buftype buftype user buf int n buffer 0 開啟攝像頭裝置 int ope...
V4L2 程式設計
v4l2程式設計 1.定義 2.工作流程 開啟裝置 檢查和設定裝置屬性 設定幀格式 設定一種輸入輸出方法 緩衝區管理 迴圈獲取資料 關閉裝置。3.裝置的開啟和關閉 include int open const char device name,int flags include int close ...