依賴庫:opencv 2.4.9 /dlib 19.0/libfacedetection
本篇不記錄如何配置,重點在實現上。使用libfacedetection實現人臉區域檢測,聯合dlib標記人臉特徵點,最後使用opencv的facerecognizer實現人臉識別。
訓練模組:人臉檢測——>獲取人臉區域的點座標——>人臉關鍵點標記——>人臉對正——>歸一化處理——>儲存——>手動篩選——>訓練樣本——>得到train.xml
識別模組:讀取train.xml——>迴圈(人臉檢測——>獲取人臉區域的點座標——>人臉關鍵點標記——>人臉對正——>歸一化處理——>送入model->predict——>**出結果——>puttext在方框上寫出名字)
#include
#include
#include
using
namespace cv;
using
namespace
std;
static
void read_csv(const
string& filename, cv::vector
& images, cv::vector
& labels, char separator = ';')
string line, path, classlabel;
while (getline(file, line))
}}
#include
#include
#include
#include
#include
#include
#include
using
namespace dlib;
frontal_face_detector detector = get_frontal_face_detector();
shape_predictor sp;//already get
#include
#include
const
int namenumber = 4;//測試的人臉數量
const
string textname[namenumber] = ;//做乙個儲存人臉名字的陣列
ptrgettrainmodel(string fn_csv)//輸入csv檔案的路徑名
catch (cv::exception& e)
// 如果沒有讀取到足夠,我們也得退出.
if (images.size() <= 1)
ptrmodel = createeigenfacerecognizer(80);//建立人臉識別類 可修改 lbphface、eigenface、fishe***ce
model->train(images, labels);
return model;
}int main()
else
}}
用了掩碼。
#include
#include
void dlib_predefine()
cv::mat facetoone(cv::mat source)//歸一化處理函式
mat facedetect(mat frame)//臉是否存在
return error;
}
#include
#include "facedetect-dll.h"
using
namespace cv;
using
namespace
std;
mat facedetect(mat frame);
void dlib_predefine();//dlib 預定義的函式
#include
#include
#include
#include
#include
#include
#include
using
namespace dlib;
frontal_face_detector detector = get_frontal_face_detector();
shape_predictor sp;//already get
opencv聯合dlib人臉檢測例子
原始碼比較簡潔,雜餘資訊全部去掉,原始碼中已經做了中文注釋。本例子是用opencv載入影象,然後呼叫dlib進行人臉檢測,得到人臉所在區域以及特徵點,最後還是用opencv描繪人臉特徵點。例子原始碼以及解釋 include include include include include includ...
使用opencv和dlib進行人臉三角刨分
圖 delaunay三角剖分偏愛小角度 給定平面中的一組點,三角剖分指的是將平面細分為三角形,這些點為頂點。在圖1中,我們在左側影象上看到了一組地標,在中間影象上看到了三角剖分。一組點可以有許多可能的三角剖分,但是delaunay三角剖分之所以突出是因為它具有一些不錯的特性。在delaunay三角剖...
opencv與mfc聯合使用時
opencv 與mfc一起使用時,在退出程式時,會出現 6a 70 63 00 等記憶體洩漏。只要程式中使用mat iplimage cvmat 這幾個型別,在退出時都會有記憶體洩漏。可以單獨建立乙個程式,只定義這幾個變數,發現確實是有。mfc下使用opencv出現記憶體洩露的解決辦法 可以再對op...