直接在qt pro檔案裡面加上
config(release,debug|release)
config(debug,debug|release)
我這麼寫是因為我的計算機是64位的。
實驗原始碼如下:
#include"mainwindow.h"
#include
#include
#include
#include
#include
#include
usingnamespace
cv;
voiddetectanddraw(
mat&img,
cascadeclassifier&cascade,
cascadeclassifier&nestedcascade,
double
scale,
bool
tryflip);
intmain(int
argc,
char
*argv)
matframe;
matedges;
cascadeclassifier
cascade,nestedcascade;
bool
stop=
false;
//訓練好的檔名稱,放置在可執行檔案同目錄下
cascade.load("haarcascade_frontalface_alt.xml");
nestedcascade.load("haarcascade_eye_tree_eyeglasses.xml");
while(!stop)
return
0;
}
voiddetectanddraw(
mat&img,
cascadeclassifier&cascade,
cascadeclassifier&nestedcascade,
double
scale,
bool
tryflip)
;
//建立縮小的,加快檢測速度
//nt
cvround
(double
value)
對乙個double型的數進行四捨五入,並返回乙個整型數!
matgray,smallimg(cvround(img.rows/scale),cvround(img.cols/scale),
cv_8uc1
);
//轉成灰度影象,harr特徵基於灰度圖
cvtcolor(img,gray,cv_bgr2gray
);
//改變影象大小,使用雙線性差值
resize(gray,smallimg,smallimg.size(),0,0,
inter_linear
);
//變換後的影象進行直方圖均值化處理
equalizehist(smallimg,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++)
}
cv::imshow(
"result",img);
}
基於opencv的人臉檢測學習(一)
人臉檢測是指檢測並定位到指定影象中的人臉,並且返回高精度的人臉框座標。目前的人臉檢測方法大致可分為兩類 基於知識和基於統計 基於知識的方法 將人臉看作器官特徵的組合,根據面部器官的特徵和幾何位置關係來檢測人臉。例如模板匹配 人臉特徵 形狀與邊緣 紋理特徵 顏色特徵等方法。基於統計的方法 將人臉看作二...
基於OpenCV的簡單的人臉檢測
這個是在數字影象處理課程裡面的乙個小實踐內容。參考網上已有 重新配置編譯,效果不錯。人臉識別的庫使用的是haarcascade frontalface檔案,包含在opencv當中的。關鍵部分 如下 本原始碼只為學習交流之用 typersever from gzhu static cvmemstora...
基於opencv3的人臉檢測
目前opencv3中已經有人臉檢測的類了,只要呼叫函式庫的類就行 該程式需要兩個xml檔案,分別是haarcascade frontalface alt.xml和haarcascade eye tree eyeglasses.xml,它們分別是已經通過了大量訓練且能檢測出人臉和眼睛了,只要呼叫即可。...