arrow_back Volver
Inicio keyboard_arrow_right Artículos keyboard_arrow_right Artículo

Cómo detectar caras usando PHP

Mauro Chojrin

Formador técnico

av_timer 2 Min. de lectura

remove_red_eye 12778 visitas

calendar_today 09 Octubre 2018

Me crucé con una pregunta muy interesante en un foro de PHP:

¿Cómo detectar caras en imágenes?

Me intrigó el tema, así que me puse a investigar un poco y llegué a un paquete que prometía: mauricesvay/php-facedetection.

Sin perder mucho tiempo, armé mi proyecto (¡vía mi amigo composer, obvio!): composer require mauricesvay/php-facedetection

Y ahí me fui a ver la documentación... algo pobre por cierto... así que decidí escribir estas líneas a ver si puedo ayudar a algún colega :).

Ansioso por probar mi nuevo juguete hice lo que cualquiera haría... copié el archivo index.php a mi proyecto, hice algunas adaptaciones hasta llegar a:

    <?php
    require_once 'vendor/autoload.php';
    $detector = new svay\FaceDetector('detection.dat');
    $detector->faceDetect($argv[1]);
    $detector->toJpeg();

Y... ¡a ver qué tal funciona esto!

Hice la ejecución correspondiente: php index.php ~/Pictures/Mauro\ 2011.jpg

Foto que contiene una cara

Y obtuve unas tres pantallas de símbolos ilegibles... no exactamente lo que esperaba :(

Lo que pasaba en realidad era simple: el método toJpeg() escupe la imagen directo a la salida... nada muy problemático en realidad.

Versión 2 de la llamada: php index.php ~/Pictures/Mauro\ 2011.jpg > cara.jpg

Ahora sí :)

Foto con una cara enmarcada

Otro método que puede resultar interesante es cropFaceToJpeg. Este método genera una nueva imagen que sólo contiene la cara en cuestión:

Foto que contiene sólo la cara

Y tiene una pequeña ventaja: se le puede pasar un parámetro para especificar la salida... No me preguntes por qué no tiene lo mismo el anterior... así era cuando llegué. Aunque siendo una librería de código abierto, en una de esas me inspiro y le agrego el parámetro :).

Todo va a funcionar bien siempre que tengas instalada la librería GD.

Y luego, si queremos levantar un poco la apuesta... ¿se podrá pedir a esta librería comparar dos caras? (Como para hacer un login vía webcam o algo así).

Me temo que no pero... ¡a no desperar! Existe otro recurso que vale la pena explorar: FaceRD.

Esta librería es mucho más elaborada (lástima que la documentación no acompañe :p) y utiliza el poder de cómputo de terceros (Microsoft Face por ejemplo).

No he llegado a probarla aún, dicen que va muy bien, sólo que tiene un límite al uso gratuito.

¿Conoces alguna otra librería interesante para detectar caras?

Aumenta tu productividad con GitHub Copilot

  • done Curso GRATUITO
  • done Regístrate antes del 31 de Marzo
  • done Obtén una ventaja competitiva
  • done Aprovecha la IA a tu favor
Más información