利用OpenCV的級聯分類器類CascadeClassifier和Haar特徵實現人臉區域的檢測

級聯分類器是將若干個分類器進行連接,從而構成一種多項式級的強分類器。級聯分類器使用前要先進行訓練,怎麼訓練?用目標的特徵值去訓練,對於人臉來說,通常使用Haar特徵進行訓練

Haar特徵是由M.Oren,C.Papageorgious等人在論文“Pedestrian detection using wavelet templates”中首次提出的,後續經過改進與發展,C.H.Messom和A.L.Barczak提出了積分直方加速Harr特徵的計算方法,R.Lienhart,J.Maydt等人提出了Haar特徵的多個模板種類,後逐步形成OpenCV中的Haar分類器。Haar特徵也稱Haar-like特徵,是一種簡單且高效的圖像特徵,其基於矩形區域相似的強度差異Haar小波。Haar特徵的特點爲:高類的可變性;低類的可變性;而向局部的強度差異;多尺度不變性計算效率高

OpenCV提供了用於檢測目標物體的級聯分類器類CascadeClassfier,其檢測函數的原型及參數意義如下

void detectMultiScale( InputArray image,CV_OUT std::vector<Rect>& objects,double scaleFactor = 1.1,int minNeighbors = 3, int flags = 0,Size minSize =Size(),Size maxSize = Size() );

image:當然是輸入圖像了,要求是8位無符號圖像,即灰度圖

objects:輸出向量容器(保存檢測到的物體矩陣)

scaleFactor:每張圖像縮小的盡寸比例

minNeighbors:每個候選矩陣應包含的像素領域

flags:表示此參數模型是否更新標誌位;

minSize :表示最小的目標檢測尺寸;

maxSize:表示最大的目標檢測尺寸;

利用Haar特徵訓練的級聯分類器對人臉進行檢測的代碼如下

代碼中用到的根據Haar特徵訓練出的級聯分類器初始化數據xml文件下載鏈接如下:

http://pan.baidu.com/s/1mhQjWqG

 

//OpenCV版本3.0.0    
 /exe文件運行前,請把初始化XML文件放入相關工程文件下
//該程序現在不能識別戴上眼鏡的臉部,因爲對臉部區域的確認是能過是否有眼睛進一步確認的,雖然分類器已經使用了能檢測眼鏡的分類器,但效果依然不好,說明分類器還有待進一步優化訓練


代碼請加Q2034196302獲取
代碼請加Q2034196302獲取
代碼請加Q2034196302獲取

 

運行結果如下圖所示

補充說明一下

//exe文件運行前,請把初始化XML文件放入相關工程文件下
//該程序現在不能識別戴上眼鏡的臉部,因爲對臉部區域的確認是能過是否有眼睛進一步確認的

-------------------------------------------
如果你有圖像處理開發方面的需求或想接圖像處理開發方面的任務掙點零花錢,歡迎加Q2034196302諮詢!
如果你有圖像處理開發方面的需求或想接圖像處理開發方面的任務掙點零花錢,歡迎加Q2034196302諮詢!
如果你有圖像處理開發方面的需求或想接圖像處理開發方面的任務掙點零花錢,歡迎加Q2034196302諮詢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章