0

J'essaie de détecter si les yeux de l'utilisateur sont ouverts ou fermés dans une vidéo en direct, en utilisant l'algorithme de haar cascade en python. Malheureusement, cela ne fonctionne pas bien. J'ai compris que "haarcascade_eye.xml" est utilisé pour détecter les yeux ouverts et "haarcascade_lefteye_2splits" pour détecter un oeil (fermé ou ouvert).Détection d'un oeil ouvert ou fermé en utilisant openCV dans python

Je voulais comparer les yeux et les yeux ouverts en général dans la vidéo mais cela fait une fausse reconnaissance des yeux fermés. Existe-t-il d'autres façons de l'améliorer?

Voici mon code:

import numpy as np 
import cv2 

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') 
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml') 
lefteye_cascade = cv2.CascadeClassifier('haarcascade_lefteye_2splits.xml') 

cap = cv2.VideoCapture(0) 

while True: 
    ret, img = cap.read() 
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 
    faces = face_cascade.detectMultiScale(gray, 1.3, 5) 

for (x, y, w, h) in faces: 
    cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2) 
    # regions of interest 
    roi_gray = gray[y:y + h, (x+w)/2:x + w] 
    roi_color = img[y:y + h, (x+w)/2:x + w] 
    eye = 0 
    openEye = 0 
    counter = 0 
    openEyes = eye_cascade.detectMultiScale(roi_gray) 
    AllEyes = lefteye_cascade.detectMultiScale(roi_gray) 
    for (ex, ey, ew, eh) in openEyes: 
     openEye += 1 
     cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0),2) 

    for (ex, ey, ew, eh) in AllEyes: 
     eye += 1 
     cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 0, 40),2) 

    if (openEye != eye): 
     print ('alert') 

cv2.imshow('img', img) 

k = cv2.waitKey(30) & 0xff 
if k == 27: 
    break 

cap.release() 
cv2.destroyAllWindows() 
+0

trouvé une bibliothèque en utilisant Solution- Dlib et la reconnaissance des repères du visage :) – xYaelx

Répondre

1

finalement j'utiliser la bibliothèque Dlib pour reconnaître des repères du visage :)