Détecteur de visage PHP
Identifiez l'emplacement du visage dans l'image à l'aide de GD.
- Il a été créé sur la base du projet mauricesvay/php-facedetection.
- En portant sur js et en appliquant les améliorations, j'ai réécrit le code PHP avec error_reporting = E_ALL safe.
- La raison pour laquelle la licence est GPL-2.0 est qu'elle doit conserver la licence de l'original.
- Il existe une grande différence de taux de reconnaissance en fonction de la taille de l'image. Parce que je ne comprenais pas les principes de l’algorithme, je n’ai pas pu améliorer le taux de reconnaissance autre que la taille. La plupart des images utilisées lors des tests donnent les meilleurs résultats lorsqu'elles mesurent 281 px. La valeur par défaut est donc 281.
- Parce qu'il consomme beaucoup de ressources, si vous souhaitez l'utiliser à des fins de tri de vignettes, il est préférable de le détecter au moment du téléchargement et d'enregistrer la valeur de direction ensemble, plutôt que de l'appliquer en temps réel.
$ php composer.phar require " crucifyer/facedetector-php " " dev-main "
$ detector = new Xeno Image FaceDetector (imagefile or gdresource or imagebinary);
$ face = $ detector -> FaceDetect ();
[ ' x ' => int, ' y ' => int, ' w ' => int]
$ faces = $ detector -> FaceDetect ( true );
[
[ ' x ' => int, ' y ' => int, ' w ' => int],
[ ' x ' => int, ' y ' => int, ' w ' => int],
[ ' x ' => int, ' y ' => int, ' w ' => int],
[ ' x ' => int, ' y ' => int, ' w ' => int],
[ ' x ' => int, ' y ' => int, ' w ' => int],
]
FaceDetector:: FaceDetect ([multiplue bool], [resSize int])
- Les fichiers image GIF, jpeg, png, webp, les ressources gd et les images binaires sont disponibles.
multiple
- Si vous définissez la valeur multiple sur true, jusqu'à 10 positions de visage supplémentaires seront trouvées et renvoyées sous forme de tableau.
- Vous pouvez saisir un nombre au lieu de vrai, limité entre 2 et 50.
- Le taux de reconnaissance de plusieurs visages est particulièrement faible, il existe donc une forte probabilité que tous les visages ne soient pas reconnus même si la taille de l'image est modifiée.
resTaille
- Au lieu d’utiliser l’image originale telle quelle, utilisez une taille d’image réduite. Elle est réduite en fonction de la plus petite valeur entre la largeur et la hauteur, et la valeur par défaut est 281.
$ face = $ detector -> FaceDetect ();
$ size = $ detector -> getImageSize ();
$ direction = Xeno Image FaceDetector:: AlignDirection ( $ size [ ' width ' ], $ size [ ' height ' ], $ face [ ' x ' ], $ face [ ' y ' ], $ face [ ' w ' ]);
- Renvoie la direction à aligner vers le visage.
- Si la largeur est longue, elle renvoie la position où le visage a été détecté entre la gauche, le centre et la droite, et si la hauteur est longue, elle renvoie la position où le visage a été détecté, entre le haut, le milieu et le bas.
- Nous estimons qu'il est biaisé d'environ 30 % ou plus.
$ faces = Xeno Image FaceDetector:: FilterSmallFaces ( $ faces );
- Filtrez tout ce qui est au moins 60 % plus petit que le plus grand.
$ detector = new Xeno Image FaceDetector (imagefile or gdresource or imagebinary);
$ direction = $ detector -> getDirection ();
- Automatise le processus jusqu'à la reconnaissance de la direction. Lorsque plusieurs visages sont reconnus, ils sont centrés.
$ detector = new Xeno Image FaceDetector (imagefile or gdresource or imagebinary);
[gd resource or boolean] = $ detector -> cropThumbnail (size, [direction], [file], [type]);
- Renvoie la vignette recadrée. Même si l'original est plus petit que la taille, il n'est pas agrandi pour s'adapter, mais est simplement recadré selon le rapport.
direction
- En cas d'omission, getDirection est utilisé pour le remplir.
déposer
- En cas d'omission, la ressource gd est renvoyée.
taper
- gif, jpg, png, png8 et webp sont pris en charge. S'ils sont omis, cela est déterminé par l'extension du fichier.
- png8 utilise les couleurs indexées de la même manière que gif, sa taille est donc petite et la qualité de l'image est médiocre.
Un exemple complet est contenu dans tests/example.php. Modifiez votre emplacement autoload.php et testez-le dans la console.
projet js : https://github.com/crucifyer/facedetector-js