使用opencv-python 和haar特徵進行人臉檢測

import cv2
import numpy as np
import os

os.chdir('F:/opencv/test')
##使用haar特徵 + adaboost 進行人臉檢測和眼睛檢測

#這兩個文件.xml是opencv自帶的。可以搜索到(在Anaconda/Libssite-packages/cv2/data目錄下),然後將其複製放到自己指定的目錄下
face_xml = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_xml = cv2.CascadeClassifier('haarcascade_eye.xml')

#load jpg,這個圖片的目錄和之前的.xml的目錄一致
img = cv2.imread('zhoujielun.jpg')

#haar特徵提取必須是在灰度圖上進行
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#人臉識別: gray數組,1.3表示滑窗的縮放率scale,5表示人臉至少佔有5個像素
faces = face_xml.detectMultiScale(gray,1.3,5)
print('face=',len(faces))

#畫出人臉
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+h]
    roi_color = img[y:y+h,x:x+h]
    
    #眼睛檢測,必須是在灰度圖上進行
    eyes = eye_xml.detectMultiScale(roi_face)
    print('eye=',len(eyes))
    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)

print('img shape=', img.shape)

cv2.imwrite('zhoujielun_after_detection.jpg',img)  #寫入圖片
cv2.imshow('dst',img)
cv2.waitKey(0)

比如:
在這裏插入圖片描述

哈哈哈,竟然把杰倫的大鼻子識別成了眼睛,年輕的杰倫真帥
識別結果:
在這裏插入圖片描述

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