
OpenCV Eye Tracking — un prototype d’analyse du regard pour la recherche en psychologie, qui détecte la position de la pupille dans l’image d’une webcam et estime en temps réel la direction du regard.
OpenCV
dlib
Python
Vision par ordinateur
Projet solo
Plateforme
Une webcam ordinaire — sans matériel d’eye tracking dédié
Détection
Modèle de 68 points de repère faciaux de dlib, sans entraînement ni calibration supplémentaires
Mon rôle
Projet solo : conception et implémentation, du début à la fin
Sortie
Publié sur GitHub (gakutosasabe/OpenCVEyeTracking) : 5 étoiles, 1 fork
L’analyse du regard — où quelqu’un regarde — est une donnée précieuse pour la recherche en psychologie, mais les eye trackers dédiés sont chers et difficiles à justifier. Pour m’exercer à OpenCV et à Python, j’ai lancé un projet personnel afin de voir si une simple webcam pouvait suffire à estimer sommairement la direction du regard.
En partant des régions des yeux trouvées par la bibliothèque de reconnaissance faciale dlib, j’ai localisé la pupille sans entraînement ni calibration supplémentaires, puis je l’ai comparée au centre de l’œil pour la convertir en direction du regard — haut, bas, gauche ou droite.
Approche : Pas de matériel supplémentaire, pas de données d’entraînement — juste une webcam, les points de repère de dlib et un simple seuillage d’image.
Un projet personnel, disponible sur GitHub sous gakutosasabe/OpenCVEyeTracking. J’ai tout pris en charge moi-même, de la conception à l’implémentation.
Détection du visage et des yeux
dlib, avec son modèle pré-entraîné shape_predictor_68_face_landmarks.dat, fournit 68 points de repère faciaux, à partir desquels on lit les coordonnées des deux yeux.
Détection de la pupille
L’image de l’œil, recadrée, est seuillée en noir et blanc ; le barycentre des pixels sombres (la pupille) devient sa coordonnée.
Visualisation
OpenCV superpose le résultat à l’image de la caméra — un point bleu pour la pupille, un point bleu clair pour le centre de l’œil, et la coordonnée de la pupille par rapport à ce centre affichée en bas de l’écran.
Estimation de la direction du regard :
Diviser la région de l’œil en trois colonnes pour définir Gauche / Centre / Droite, et en trois lignes pour définir Haut / Milieu / Bas.
Vérifier dans quelle cellule tombe la coordonnée de la pupille, et afficher la direction du regard de chaque œil.
Le détecteur de pupille est volontairement simple : seuiller l’image de l’œil et prendre le barycentre de la zone sombre. Même sans entraînement supplémentaire, cela s’est révélé assez fiable.
Mais le seuil est très sensible à la luminosité ambiante — une vraie contrainte, puisqu’il faut le réajuster dès que l’environnement change.
Après l’avoir construit, j’ai appris que détecter la pupille comme un cercle par transformée de Hough est l’approche la plus courante — une piste connue pour améliorer la précision, que je n’ai pas encore implémentée.
Prototype fonctionnel
Détection de la pupille et estimation du regard (haut/bas/gauche/droite) à partir de la seule image d’une webcam, sans matériel supplémentaire.
Accueil public
Publié sur GitHub : 5 étoiles et 1 fork.
Compétence acquise
J’en suis ressorti convaincu que cela pouvait réellement servir la recherche en psychologie, avec des compétences OpenCV réutilisées dans mes projets suivants.
Un détecteur de pupille par seuillage est simple à construire, mais j’ai ressenti sa limite évidente : la dépendance aux conditions d’éclairage.
Pour une détection plus robuste, la prochaine étape consiste à le comparer à une détection de cercles par transformée de Hough, ou à une approche par modèle entraîné comme Mediapipe.
Voir sur GitHub