摄像头动态人脸人眼识别

导入opencv-python

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')

调用摄像头

cap=cv2.VideoCapture(0)

while(True):
#获取摄像头拍摄的画面
ret,frame=cap.read()

faces=face_cascade.detectMultiScale(frame,1.3,5)
img=frame
for(x,y,w,h) in faces:
    #画出人脸框,蓝色,最后数字表示画笔宽度
    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)

#展示效果画面
cv2.imshow('img',img)

#每3毫秒监听一次键盘,若返回'f',执行break
#waitKey()--这个函数是在一个给定的时间内(单位ms)等待用户按键触发;
#期间摄像头画面静止,如果用户没有按下键,则接续等待(循环)
if cv2.waitKey(3)& 0xFF == ord('f'):
    break

关闭摄像头和窗口

cap.release()
cv2.destroyAllWindows()

猜你喜欢

转载自www.cnblogs.com/double-points/p/10923446.html