在進行人臉識別時候,為了達到效果,我們使用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...