06基于Haar+Adaboost人臉識(shí)別

1、加載xml(兩個(gè)xml文件,一個(gè)描述的是人臉,一個(gè)描述的是眼睛);2、加載待識(shí)別的圖片;3、轉(zhuǎn)換為灰度圖,計(jì)算haar特征(計(jì)算haart特征由opencv來完成);4檢測出當(dāng)前的haar特征,以及人臉上的眼睛;5、對檢測結(jié)果進(jìn)行遍歷,并繪制出人臉和眼睛

# 1 load xml 2 load jpg 3 haar gray 4 detect 5 draw
import cv2
import numpy as np
# load xml 1 file name
face_xml = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_xml = cv2.CascadeClassifier('haarcascade_eye.xml')
# load jpg
img = cv2.imread('face.jpg')
cv2.imshow('src',img)
# haar gray
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

# detect faces(檢測圖片中的人臉)  (灰度圖的數(shù)據(jù),縮放系數(shù),目標(biāo)大小<人臉最少不能小于5個(gè)像素>)
faces = face_xml.detectMultiScale(gray,1.3,5)
print('face=',len(faces))   #獲取當(dāng)前人臉的個(gè)數(shù)

# draw,框出當(dāng)前的每一個(gè)人臉
for (x,y,w,h) in faces:
    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)      #畫方框
    roi_face = gray[y:y+h,x:x+w]   #灰度數(shù)據(jù)
    roi_color = img[y:y+h,x:x+w]   #彩色數(shù)據(jù)

    # 1 gray   獲取眼睛
    eyes = eye_xml.detectMultiScale(roi_face)

    print('eye=',len(eyes))   #獲取當(dāng)前眼睛的個(gè)數(shù)
    #框出所有眼睛
    #for (e_x,e_y,e_w,e_h) in eyes:   
        #cv2.rectangle(roi_color,(e_x,e_y),(e_x+e_w,e_y+e_h),(0,255,0),2)

cv2.imshow('dst',img)
cv2.waitKey(0)

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

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