Detector de rostros PHP
Identifique la ubicación de la cara en la imagen usando GD.
- Fue creado en base al proyecto mauricesvay/php-facedetection.
- Al migrar a js y aplicar las mejoras, reescribí el código PHP con error_reporting = E_ALL seguro.
- La razón por la que la licencia es GPL-2.0 es porque debe conservar la licencia original.
- Existe una gran diferencia en la tasa de reconocimiento según el tamaño de la imagen. Como no entendía los principios del algoritmo, no pude mejorar la tasa de reconocimiento más que el tamaño. La mayoría de las imágenes utilizadas en las pruebas tienen los mejores resultados cuando tienen 281 píxeles, por lo que el valor predeterminado es 281.
- Debido a que consume muchos recursos, si desea usarlo para ordenar miniaturas, es mejor detectarlo en el momento de la carga y guardar el valor de dirección juntos, en lugar de aplicarlo en tiempo real.
$ 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])
- Hay disponibles archivos de imagen GIF, jpeg, png, webp, recursos gd y archivos binarios de imágenes.
múltiple
- Si establece el valor múltiple en verdadero, se encontrarán hasta 10 posiciones de caras más y se devolverán como una matriz.
- Puede ingresar un número en lugar de verdadero, limitado a 2 a 50.
- La tasa de reconocimiento de múltiples caras es particularmente baja, por lo que existe una alta probabilidad de que no todas las caras sean reconocidas incluso si se cambia el tamaño de la imagen.
cambiar tamaño
- En lugar de utilizar la imagen original tal como está, utilice un tamaño de imagen reducido. Se reduce según el menor entre ancho y alto, y el valor predeterminado es 281.
$ face = $ detector -> FaceDetect ();
$ size = $ detector -> getImageSize ();
$ direction = Xeno Image FaceDetector:: AlignDirection ( $ size [ ' width ' ], $ size [ ' height ' ], $ face [ ' x ' ], $ face [ ' y ' ], $ face [ ' w ' ]);
- Devuelve la dirección para alinear hacia la cara.
- Si el ancho es largo, devuelve la posición donde se detectó la cara entre izquierda, centro y derecha, y si la altura es larga, devuelve la posición donde se detectó la cara, entre arriba, medio y abajo.
- Consideramos que está sesgado en aproximadamente un 30% o más.
$ faces = Xeno Image FaceDetector:: FilterSmallFaces ( $ faces );
- Filtra todo lo que sea al menos un 60% más pequeño que el más grande.
$ detector = new Xeno Image FaceDetector (imagefile or gdresource or imagebinary);
$ direction = $ detector -> getDirection ();
- Automatiza el proceso hasta el reconocimiento de dirección. Cuando se reconocen varias caras, se centran.
$ detector = new Xeno Image FaceDetector (imagefile or gdresource or imagebinary);
[gd resource or boolean] = $ detector -> cropThumbnail (size, [direction], [file], [type]);
- Devuelve la miniatura recortada. Incluso si el original es más pequeño que el tamaño, no se amplía para que quepa, sino que simplemente se recorta según la proporción.
dirección
- Si se omite, se utiliza getDirection para completarlo.
archivo
- Si se omite, se devuelve el recurso gd.
tipo
- Se admiten gif, jpg, png, png8 y webp. Si se omite, está determinado por la extensión del archivo.
- png8 usa colores indexados de la misma manera que gif, por lo que su tamaño es pequeño y la calidad de la imagen es pobre.
Un ejemplo completo está contenido en tests/example.php. Edite su ubicación de autoload.php y pruébelo en la consola.
proyecto js: https://github.com/crucifyer/facedetector-js