本人在尝试使用摄像头检测人眼的过程中,采用了先识别人脸,然后在人脸眼睛的位置做掩模,然后识别人眼的方式,该方法可以一定程度上实现人眼的检测,但在眨眼、头部动作较大的时候就会出现识别失败,从而使程序出错。尝试过使用识别结果的元素个数来判断识别结果,如果识别失败就跳回到循环起始位置,从新开始,但这样计算机计算量非常大,出现了类似死循环的趋势。哪位大神做过相关的算法,请多指教。
import cv2
import numpy as np
import math
cap=cv2.VideoCapture(0,cv2.CAP_DSHOW)
while(cap.isOpened()):
ret,frame=cap.read()
img=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
face_cascade = cv2.CascadeClassifier("D:/python/BYeyes/Lib/site-packages/haarcascade_frontalface_default.xml")
faces = face_cascade.detectMultiScale(frame, 1.15, 5) # 识别人脸
#if len(faces)<=3:
# continue
mask = np.zeros(img.shape, np.uint8) # 创建同原图像一样大小的掩模
x=faces[0][0]
y=faces[0][1]
w=faces[0][2]
h=faces[0][3]
mask[int(y