學習opencv 人臉識別

2021-07-22 03:27:27 字數 2023 閱讀 9287

在opencv中提供了許多成熟的介面,其中乙個就是人臉識別,先看看效果圖。

可以看出用opencv自帶的樣本就能很方便的識別出人臉。opencv有已經自帶了人臉的haar特徵分類器。在目錄\opencv\sources\data\haarcascades 下面。可以看出裡面還有很多分類器,識別左耳、右耳、鼻子、嘴等。本列子用的haarcascade_frontalface_alt.xml。

開啟haarcascade_frontalface_alt.xml檔案可以看到都是xml存放的資料,這些資料描述的是人臉的haar特徵值。

void cascadeclassifier::detectmultiscale(const mat& image, vector

& objects, double scalefactor=1.1, int minneighbors=3, int flags=0, size minsize=size(), size maxsize=size())

image 為待檢測的,一般轉化為灰度圖

objects 被檢查矩形框向量

scalefactor 前後兩次檢查的比例係數,預設為1.1,每次擴大10%

minneighbors 表示構成檢測目標的相鄰矩形的最小個數(預設為3個)。如果組成檢測目標的小矩形的個數和小於 min_neighbors - 1 都會被排除。如果min_neighbors 為 0, 則函式不做任何操作就返回所有的被檢候選矩形框

flags 預設值為0

minsize 得到目標區域的最小範圍

maxsize 得到目標區域的最大範圍

#include "opencv2/objdetect/objdetect.hpp"

#include "opencv2/highgui/highgui.hpp"

#include "opencv2/imgproc/imgproc.hpp"

#include #include using namespace std;

using namespace cv;

/** 函式宣告 */

void detectanddisplay(mat frame);

/** 全域性變數 */

string face_cascade_name = "haarcascade_frontalface_alt.xml";

cascadeclassifier face_cascade;

string window_name = "原視窗";

int main(int argc, const

char** argv)

; //-- 2. 讀取

//-- 3. 對當前幀使用分類器進行檢測

if (!frame.empty())

else

waitkey(0);

return0;}

/** @函式 detectanddisplay */

void detectanddisplay(mat frame)

//-- 顯示結果影象

imshow(window_name, frame);

}

face_cascade.load(face_cascade_name)
讀取xml檔案

獲取待檢測的

mat frame_gray;

cvtcolor(frame, frame_gray, cv_bgr2gray);

把轉為灰度,便於計算

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

機器學習 opencv 人臉識別

鑑於本人的工作環境主要是採用python作為開發工具,故本篇部落格是基於python來做的學習記錄。1.讀取,將其轉換為陣列 from matplotlib import pyplot as pyl import cv2 import numpy img cv2.imread cat.jpg img...

OpenCv人臉識別

在進行人臉識別時候,為了達到效果,我們使用opencv的分類器。進行對進行識別。include include include include using namespace cv using namespace std void detectanddraw mat img,cascadeclass...

opencv人臉識別

在python環境下利用opencv實現人臉識別,接下來一步一步動手操作。預備知識 一 環境準備 如果已經準備好了請跳過。0,第一步安裝numpy和matplotlib pip install upgrade setuptools pip install numpy matplotlib 1,pip...