//原**
#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...