在我的python代码中,检测到眨眼次数过多的问题。(使用眼睛纵横比方法)
我正在尝试使用openCV和python检测视频中的人眼闪烁 因此,我在github中找到了一个非常有效的示例代码,我正在重构它 我的代码是根据Tereza Soukupova和Jan Cech在2016年发明的EAR(眼睛纵横比)方法实现的 eye_aspect_ratio()获取眼睛周围的六个点,并计算水平轴和垂直轴的绝对面积 这是眼睛纵横比法的图形: 这是我的代码:在我的python代码中,检测到眨眼次数过多的问题。(使用眼睛纵横比方法),python,opencv,Python,Opencv,我正在尝试使用openCV和python检测视频中的人眼闪烁 因此,我在github中找到了一个非常有效的示例代码,我正在重构它 我的代码是根据Tereza Soukupova和Jan Cech在2016年发明的EAR(眼睛纵横比)方法实现的 eye_aspect_ratio()获取眼睛周围的六个点,并计算水平轴和垂直轴的绝对面积 这是眼睛纵横比法的图形: 这是我的代码: def eye_aspect_ratio(eye): A = dist.euclidean(eye[1], eye
def eye_aspect_ratio(eye):
A = dist.euclidean(eye[1], eye[5])
B = dist.euclidean(eye[2], eye[4])
C = dist.euclidean(eye[0], eye[3])
ear = (A + B) / (2.0 * C)
return ear
# (...)
# face detection using face_cascade
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cropped = frame[y - int(h / 8):y + h + int(h / 8), x - int(w / 8):x + w + int(w / 8)]
rects = detector(cropped, 0)
for rect in rects:
shape = predictor(cropped, rect)
shape = face_utils.shape_to_np(shape)
leftEye = shape[lStart:lEnd]
rightEye = shape[rStart:rEnd]
leftEAR = eye_aspect_ratio(leftEye)
rightEAR = eye_aspect_ratio(rightEye)
但是,我的代码中有一个问题,即检测到的眨眼次数太多
我认为,我的代码错误地检测到它不是眨眼(例如,微笑的眼睛或眨眼)
有什么我错过的吗
请帮帮我。一般来说,双眼同时眨眼 因此,通过使用
leftEAR
和righear
的成本,您应该使用将眼睛比率的一半相加和除以的值
我认为使用这种方法可以解决一些问题
您可以尝试以下代码:
leftEAR = eye_aspect_ratio(leftEye)
rightEAR = eye_aspect_ratio(rightEye)
# use this value
EAR = (leftEAR + rightEAR) / 2.0
最后,将EAR
与阈值进行比较时,使用小于0.3
的值
多谢各位。祝你好运。谢谢!我认为这很有效。祝你好运