OpenCv人臉識別

2021-07-28 02:53:41 字數 3034 閱讀 8083

在進行人臉識別時候,為了達到效果,我們使用opencv的分類器。進行對進行識別。

#include 

#include

#include

#include

using

namespace cv;

using

namespace

std;

void detectanddraw(mat& img, cascadeclassifier& cascade,

cascadeclassifier& nestedcascade,

double scale, bool tryflip);

int main()

mat frame;

mat edges;

cascadeclassifier cascade, nestedcascade;

bool stop = false;

//訓練好的檔名稱,放置在可執行檔案同目錄下

; //建立縮小的,加快檢測速度

//nt cvround (double value) 對乙個double型的數進行四捨五入,並返回乙個整型數!

mat gray, smallimg(cvround(img.rows / scale), cvround(img.cols / scale), cv_8uc1);

//轉成灰度影象,harr特徵基於灰度圖

cvtcolor(img, gray, cv_bgr2gray);

imshow("灰度", gray);

//改變影象大小,使用雙線性差值

resize(gray, smallimg, smallimg.size(), 0, 0, inter_linear);

imshow("縮小尺寸", smallimg);

//變換後的影象進行直方圖均值化處理

equalizehist(smallimg, smallimg);

imshow("直方圖均值處理", smallimg);

//程式開始和結束插入此函式獲取時間,經過計算求得演算法執行時間

t = (double)cvgettickcount();

//檢測人臉

//detectmultiscale函式中smallimg表示的是要檢測的輸入影象為smallimg,faces表示檢測到的人臉目標序列,1.1表示

//每次影象尺寸減小的比例為1.1,2表示每乙個目標至少要被檢測到3次才算是真的目標(因為周圍的畫素和不同的視窗大

//小都可以檢測到人臉),cv_haar_scale_image表示不是縮放分類器來檢測,而是縮放影象,size(30, 30)為目標的

//最小最大尺寸

cascade.detectmultiscale(smallimg, faces,

1.1, 2, 0

//|cv_haar_find_biggest_object

//|cv_haar_do_rough_search

| cv_haar_scale_image

, size(30, 30));

//如果使能,翻轉影象繼續檢測

if (tryflip)

}t = (double)cvgettickcount() - t;

// qdebug( "detection time = %g ms\n", t/((double)cvgettickfrequency()*1000.) );

for (vector

::const_iterator r = faces.begin(); r != faces.end(); r++, i++)

else

rectangle(img, cvpoint(cvround(r->x*scale), cvround(r->y*scale)),

cvpoint(cvround((r->x + r->width - 1)*scale), cvround((r->y + r->height - 1)*scale)),

color, 3, 8, 0);

if (nestedcascade.empty())

continue;

smallimgroi = smallimg(*r);

//同樣方法檢測人眼

nestedcascade.detectmultiscale(smallimgroi, nestedobjects,

1.1, 2, 0

//|cv_haar_find_biggest_object

//|cv_haar_do_rough_search

//|cv_haar_do_canny_pruning

| cv_haar_scale_image

, size(30, 30));

for (vector

::const_iterator nr = nestedobjects.begin(); nr != nestedobjects.end(); nr++)

}imshow("識別結果", img);

}

效果圖:

opencv人臉識別

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

學習opencv 人臉識別

在opencv中提供了許多成熟的介面,其中乙個就是人臉識別,先看看效果圖。可以看出用opencv自帶的樣本就能很方便的識別出人臉。opencv有已經自帶了人臉的haar特徵分類器。在目錄 opencv sources data haarcascades 下面。可以看出裡面還有很多分類器,識別左耳 右...

opencv人臉識別 c

配置環境 opencv3.1 vs2013 配置方法 how to install opencv 3.1 with visual studio 2013 安裝常出現的錯誤 debug,release配置錯誤,debug對應opencv world310d.lib,release對應opencv wo...