Opencv與dlib聯合進行人臉關鍵點檢測與識別

2021-07-15 10:44:44 字數 2229 閱讀 2488

依賴庫: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...