运行环境 python3.6
opencv-python 3.31+contrib
代码如下:
import cv2
def detect():
face_cascade = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('./cascades/haarcascade_eye.xml')
camera = cv2.VideoCapture(0)
while True:
ret,frame = camera.read()
gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray,1.3,5)
#检测人脸,注意要转换成灰度图 1.3表示压缩率 5表示保留近邻数目的最小值
for (x,y,w,h) in faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
roi_gray = gray[x:x+w,y:y+h]
clor = frame[x:x+w,y:y+h]
eyes = eye_cascade.detectMultiScale(roi_gray,1.03,5,0,(40,40))
#在上检测的人脸中检测眼睛 40*40限制对眼睛搜索的的最小尺寸
for (ex,ey,ew,eh) in eyes:
cv2.rectangle(clor,(ex,ey),(ex+ew,ey+eh),(0,255,0),2)
cv2.imshow("camera",frame)
cv2.waitKey(500)
if __name__ == '__main__':
detect()