opencv中haar檢測器的使用

haar檢測器是一個十分經(jīng)典也十分古老的檢測器,最成功的應(yīng)用莫過于人臉檢測,它的具體原理作者還不甚清楚,查閱相關(guān)博客發(fā)現(xiàn)講的也不是很清楚,在這就不班門弄斧了。

下面講講如何使用已經(jīng)訓(xùn)練好的haar分類器。

首先建立haar分類器對象,需要讀取一個xml文件,這個文件也就是訓(xùn)練好的分類器。

face_haar = cv2.CascadeClassifier("data/haarcascades/haarcascade_frontalface_default.xml")

然后利用該分類器檢測目標(biāo)圖像(灰度圖)

faces = face_haar.detectMultiScale(gray_img,1.3,5)

其中1.3和5都是自己設(shè)定的參數(shù),具體作用還請查閱官方文檔。

得到的faces是一個列表,列表中元素為檢測到的臉部矩形框,至此,臉部檢測就完成了,十分簡潔。

下面是完整代碼(以一張圖像為例)

# 加載分類器

face_haar = cv2.CascadeClassifier("data/haarcascades/haarcascade_frontalface_default.xml")

# 把圖像轉(zhuǎn)為黑白圖像

gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 檢測圖像中的所有臉

faces = face_haar.detectMultiScale(gray_img,1.3,5)

for face_x,face_y,face_w,face_h in faces:

? ? cv2.rectangle(img, (face_x, face_y), (face_x+face_w, face_y+face_h), (0,255,0),2)

除了,針對臉部的分類器,還有眼睛,鼻子,嘴等已經(jīng)訓(xùn)練好的分類器,只需加載相應(yīng)的xml文件即可,這些可以在opencv自帶的包中找到,也可以去github上下載opencv_contrib/modules/face/data/cascades at master · opencv/opencv_contrib · GitHub,不過作者目前用嘴部和眼睛檢測器時發(fā)現(xiàn)檢測結(jié)果不很理想,臉部還不錯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容