Source: Scratch Wiki en français



Détecter les orientations du visage (tutoriel)


Depuis le 3 octobre 2025, l'extension "Reconnaissance faciale" permet de détecter l'orientation du visage sur l'axe X (roulis) à l'aide du bloc (Orientation du visage :: extension). Cependant, aucun bloc ne permet bloc ne permet de détecter l'orientation du visage sur les axes Y et Z (tangage et lacet)

Orientations du visage selon les axes : Si on incline le visage sur le côté, c'est le roulis, si on effectue un mouvement haut/bas, c'est le tangage, si on tourne le tête à gauche et à droite, c'est le lacet.

Mais Scratch nous donne les outils qui permettent de créer ces blocs.

L'orientation sur l'axe X (roulis)

Le bloc (Orientation du visage :: extension) nous permet de connaître l'orientation du visage sur l'axe X (roulis)

L'orientation sur l'axe Y (tangage)

La détection se fera à l'aide d'un bloc personnalisé qui renverra dans la variable (Orientation du visage sur l'axe Y) l'orientation correspondante. Ce même bloc sera divisé en plusieurs blocs

définir Détection de l'orientation sur l'axe Y :: custom
Détection droite :: custom
Détection gauche :: custom

Le principe ici va être de déterminer l'angle à partir des positions des oreilles et des yeux, de l'angle entre la ligne qui les sépare et l'horizontale

La détection sur la droite

définir Détection droite :: custom
aller à (l'oeil droit v) :: extension
mettre [position X de l'oeil v] à (abscisse x)
mettre [position Y de l'oeil v] à (ordonnée y)
aller à (l'oreille droite v) :: extension
ajouter ((Taille du visage :: extension) * (0.1)) à y // suppression de la différence naturelle entre la hauteur des oreilles et celle des yeux
mettre [Orientation du visage sur l'axe Y v] à ([atan v] de (((ordonnée y) - (position Y de l'oeil)) / ((abscisse x) - (position X de l'oeil)))) //obtention de l'angle en utilisant la fonction arc-tangente

La détection sur la gauche

définir Détection gauche :: custom
aller à (l'oeil gauche v) :: extension
mettre [position X de l'oeil v] à (abscisse x)
mettre [position Y de l'oeil v] à (ordonnée y)
aller à (l'oreille gauche v) :: extension
ajouter ((Taille du visage :: extension) * (0.1)) à y // suppression de la différence naturelle entre la hauteur des oreilles et celle des yeux
mettre [Orientation du visage sur l'axe Y v] à ((([atan v] de (((ordonnée y) - (position Y de l'oeil)) / ((position X de l'oeil) - (abscisse x)))) + (Orientation du visage sur l'axe Y)) / (2)) //on fait la moyenne des valeurs obtenues

L'orientation sur l'axe Z (Lacet)

La détection se fera à l'aide d'un bloc personnalisé qui renverra dans la variable (Orientation du visage sur l'axe Z) l'orientation correspondante. Ce même bloc seras divisé en plusieurs blocs

définir Détection de l'orientation sur l'axe Z :: custom
Détection de la position du nez :: custom
Détection à partir de la bouche :: custom
Détection à partir du front :: custom

Le principe ici va être de déterminer l'angle à partir des positions du nez et de la bouche et du front, de l'angle entre la ligne qui les sépare et la verticale

La détection de la position du nez

définir Détection de la position du nez :: custom
aller au (nez v) :: extension
mettre [position X du nez v] à (abscisse x)
mettre [position Y du nez v] à (ordonnée y)

La détection à partir de la bouche

définir Détection à partir de la bouche :: custom
aller à la (bouche v) :: extension
mettre [Orientation du visage sur l'axe Z v] à ([atan v] de (((abscisse x) - (position X du nez)) / ((position Y du nez) - (ordonnée y)))) //obtention de l'angle en utilisant la fonction arc-tangente

La détection à partir du front

définir Détection à partir du front :: custom
aller à (entre les yeux v) :: extension
mettre [Orientation du visage sur l'axe Z v] à (((Orientation du visage sur l'axe Z) + ([atan v] de (((abscisse x) - (position X du nez)) / ((position Y du nez) - (ordonnée y))))) / (2)) //on fait la moyenne des valeurs obtenues
Cet article fait partie de la catégorie des tutos
Tous les articles de cette catégorie :