在我的python代码中,检测到眨眼次数过多的问题。(使用眼睛纵横比方法)

在我的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

我正在尝试使用openCV和python检测视频中的人眼闪烁

因此,我在github中找到了一个非常有效的示例代码,我正在重构它

我的代码是根据Tereza Soukupova和Jan Cech在2016年发明的EAR(眼睛纵横比)方法实现的

eye_aspect_ratio()获取眼睛周围的六个点,并计算水平轴和垂直轴的绝对面积

这是眼睛纵横比法的图形:

这是我的代码:

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
的值


多谢各位。祝你好运。

谢谢!我认为这很有效。祝你好运