opencv中haar特徵檢測人臉(適合小白)

2021-07-30 05:46:38 字數 2185 閱讀 1538

本文的例程是我第一次用opencv自帶的利用haar特徵人臉識別的分類器檔案進行人臉檢測的收穫,注意,前提是已經有了分類器檔案xml,僅僅是利用它來進行檢測的過程。希望能幫到有需求的人~

//----------------haar特徵的人臉檢測-------------------

//使用opencv自帶的xml分類器檔案

//問題:1.分類器檔案的載入,使用的是opencvc的路徑下的data中的帶有gpu的資料夾下的分類器檔案,另外乙個不能成功。

//2、巨集定義中的scale的值影響了縮放的比例,非常影響結果。

//----------------------cjs-----------------------------

#include#include//#include//#include//#include#define scale 1.01//巨集定義乙個縮放的尺寸方便修改

void detect_and_draw(iplimage* img, double scale = scale)

,,,,

,,, };

//載入分類器,按照自己的分類器路徑載入

cvhaarclassifiercascade *cascade = (cvhaarclassifiercascade*)cvload(

"d:\\opencv_2_4_13\\opencv\\sources\\data\\haarcascades_gpu\\haarcascade_frontalface_default.xml");

//判斷是否載入分類器成功

if (!cascade)

//建立儲存空間

cvmemstorage* storage = cvcreatememstorage(0);

//建立灰度影象和縮小的影象

iplimage* gray = cvcreateimage(cvsize(img->width, img->height), 8, 1);

iplimage* small_img = cvcreateimage(cvsize(cvround(img->width / scale), cvround(img->height / scale)), 8, 1);

cvcvtcolor(img, gray, cv_bgr2gray);

cvresize(gray, small_img, cv_inter_linear);

//直方圖均衡化,消除成像條件引起的問題

cvequalizehist(small_img, small_img);

//先清空儲存區域

cvclearmemstorage(storage);

//這就是重點啦,識別過程

cvseq* objects = cvhaardetectobjects(small_img, cascade, storage, 1.1, 2, 0, cvsize(30, 30));

//依次提取出結果並顯示

for (int i = 0; i < (objects ? objects->total : 0); i++)

cvshowimage("result", img);

//暫停,一直顯示結果

cvwaitkey(0);

cvreleaseimage(&gray);

cvreleaseimage(&small_img);

}void main()

給兩張執行結果圖吧。

如圖,人臉還是檢測到了一些,但是有些地方有些錯誤識別,需要進一步研究咯,不過目的達到了,就是能使用分類器檔案來檢測出人臉了~

以下是幾個問題:

2:那個scale的值很會影響到識別的結果。這裡設定的是1.01,效果還可以,我之前按照書上的設定的是1.3,效果慘不忍睹。就是這樣咯~

以上就是我的一些小收穫啦,如果有錯誤希望大家指正,大家一起交流進步~~

OpenCV 計算Haar特徵個數

最早的haar特徵由papageorgiou c.等提出 a general framework for object detection 後來paul viola和michal jones提出利用積分影象法快速計算haar特徵的方法 rapid object detection using a b...

opencv筆記 8 Haar特徵

haar特徵由邊緣特徵 線性特徵 中心特徵和對角線特徵組合成特徵模板。特徵模板中有白色和黑色兩種矩形,模板的特徵值則為白色矩形畫素減去黑色矩形畫素之和。haar特徵反應了影象灰度變化的情況。對於圖中a,b,d這類特徵v sum 白 sum 黑 而對於c來說則v sum 白 2 sum 黑 積分圖就是...

關於人臉檢測中的Haar特徵提取

關於人臉檢測中的haar特徵提取 影響adaboost人臉檢測訓練演算法速度很重要的兩方面是特徵選取和特徵計算。選取的特徵為矩特徵為haar特徵,計算的方法為積分圖。1 haar特徵 haar特徵分為三類 邊緣特徵 線性特徵 中心特徵和對角線特徵,組合成特徵模板。特徵模板內有白色和黑色兩種矩形,並定...