静态图像人脸和眼睛检测

时间:2021-07-04 12:35:31

静态图像人脸和眼睛检测

import cv2

导入人脸级联分类器引擎,'.xml'文件里包含训练出来的人脸特征.

cv2.data.haarcascades即为存放所有级联分类器模型文件的目录

face_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_frontalface_default.xml')

导入人眼级联分类器引擎,'.xml'文件里包含训练出来的人眼特征.

eye_cascade=cv2.CascadeClassifier(cv2.data.haarcascades+'haarcascade_eye.xml')

读入一张图片,若图片与.py文件不在同一路径,需添加路径名

数字1为彩色通道,0为灰度图像

img=cv2.imread('girl.png',1)

用人脸级联分类器引擎进行人脸识别

返回的faces为人脸坐标列表,1.3是放大比例,5是重复识别次数

faces=face_cascade.detectMultiScale(img,1.3,5)

对每一张脸进行操作

for (x,y,w,h) in faces:

#画出人脸框,RBG色彩体系,最后的数字表示画笔的宽度

img=cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

#框选出人脸区域,在人脸区域而不是全图中进行人眼检测,节省计算资源

face_area=img[y:y+h,x:x+w]
eyes=eye_cascade.detectMultiScale(face_area)

#用人眼级联分类器引擎在人脸区域进行人眼识别,返回的eyes为眼睛坐标列表
for (ex,ey,ew,eh) in eyes:

    #画出人眼眶,绿色,最后的数字仍表示画笔宽度

    cv2.rectangle(face_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),1)

在“img”窗口中展示效果图

cv2.imshow("img",img)

cv2.waitKey(0);
cv2.destroyAllWindows()

保存效果图:

cv2.imwrite("output.jpg",img)