一、我的分類訓練器的xml檔案路徑如下:
d://opencv//sources//data//haarcascades//haarcascade_frontalface_alt.xml
每個人的安裝位置不同,訓練器的xml也不同,我的是opencv3.0的。
二、先檢測一張如里的人臉
程式:
#include#include using namespace std;
using namespace cv;
rng g_rng(12345);
cascadeclassifier face_cascades;
void detectanddisplay(mat frame);
int main()
detectanddisplay(image);
waitkey(0);
}void detectanddisplay(mat frame)
else
equalizehist(frame_gray, frame_gray);
//detectmultiscale函式中frame_gray表示的是要檢測的輸入影象為frame_gray,faces表示檢測到的人臉目標序列,1.1表示
//每次影象尺寸減小的比例為1.1,2表示每乙個目標至少要被檢測到3次才算是真的目標(因為周圍的畫素和不同的視窗大
//小都可以檢測到人臉),cv_haar_scale_image表示不是縮放分類器來檢測,而是縮放影象,size(30, 30)為目標的
//最小最大尺寸
face_cascades.detectmultiscale(frame_gray, faces, 1.1, 2, 0 | cv_haar_scale_image, size(30, 30));
for (int i = 0; i < faces.size(); i++)
imshow("人臉檢測", frame);
}
執行結果:
從結果來看,檢測效果有待提高,如果是自己寫的訓練器,那就牛了,不簽我還不會寫。
#include#include using namespace std;
using namespace cv;
rng g_rng(12345);//隨機數宣告
cascadeclassifier face_cascades;
void detectanddisplay(mat frame);//函式宣告
int main()
waitkey(0);
return 0;
}void detectanddisplay(mat frame)
else
equalizehist(frame_gray, frame_gray);
//detectmultiscale函式中frame_gray表示的是要檢測的輸入影象為frame_gray,faces表示檢測到的人臉目標序列,1.1表示
//每次影象尺寸減小的比例為1.1,2表示每乙個目標至少要被檢測到3次才算是真的目標(因為周圍的畫素和不同的視窗大
//小都可以檢測到人臉),cv_haar_scale_image表示不是縮放分類器來檢測,而是縮放影象,size(30, 30)為目標的
//最小最大尺寸
face_cascades.detectmultiscale(frame_gray, faces, 1.1, 2, 0 | cv_haar_scale_image, size(30, 30));
for (int i = 0; i < faces.size(); i++)
imshow("人臉檢測", frame);
}
執行結果:
三、參考資料
1.opencv人臉檢測
2.opencv 實現人臉檢測與相關知識整理
OpenCV人臉檢測
include include include include include include include include include include static cvmemstorage storage 0 建立乙個記憶體儲存器,來統一管理各種動態物件的記憶體 static cvhaar...
OpenCV人臉檢測
win7 32位 opencv3.0 vs2013 對資料夾中進行人臉檢測 在opencv中,人臉檢測用的是harr或lbp特徵,分類演算法用的是adaboost演算法。這種演算法需要提前訓練大量的,非常耗時,因此opencv已經訓練好了,把訓練結果存放在一些xml檔案裡面。在opencv3.0版本...
opencv人臉檢測
最近有空對學習下opencv的東西,本篇主要記錄對人臉檢測實現,而人臉檢測是為人臉識別做準備。opencv版本 3.3.0 環境 vs2015 void cascadeclassifier detectmultiscale inputarray image,vector objects,double...