使用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)

比如:
使用opencv-python 和haar特征进行人脸检测_第1张图片

哈哈哈,竟然把杰伦的大鼻子识别成了眼睛,年轻的杰伦真帅
识别结果:
使用opencv-python 和haar特征进行人脸检测_第2张图片

你可能感兴趣的:(计算机视觉,python,基础,python可视化)