opencv3 人臉識別 不同顏色圓圈 圈出

2021-08-11 13:42:18 字數 2918 閱讀 6153



//原**

#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);

}識別結果:



opencv3人臉識別問題解決

最近實現人臉識別,由於採用的是opencv3,而opencv3的人臉識別庫等contrib模組已經不再內建了。而這個模組要用cmake進行編譯,詳情可以參考其它博主的文章 整個contrib模組是很大的,而我只想使用其中的人臉識別模組,即face,我又對cmake不太熟悉,所以我用了乙個直接匯入標頭...

基於qt和opencv3人臉檢測

第一步 opencv裡面人臉檢測的方法 在opencv中,人臉檢測用的是harr或lbp特徵,分類演算法用的是adaboost演算法。這種演算法需要提前訓練大量的,非常耗時,因此opencv已經訓練好了,把訓練結果存放在一些xml檔案裡面。上圖中資料夾的名字 haarcascades hogcasc...

OpenCV小例項 人臉識別 單臉識別

進入正題吧 最近一直在弄人臉檢測的 用的就是opencv3.0自己帶的人臉檢測的 可是一直就是出錯,在網上搜了好多,一直沒有找到解決的辦法,可能是自己的vs2013有問題吧!主要 如下 include opencv2 core core.hpp include opencv2 objdetect o...