Reconocimiento facial en imágenes con PHP y OpenCV
Hoy no toca algo de mi propia cosecha, pero este echo no le quita espectacularidad al asunto..
Seguro que muchos habéis visto u oído hablar del tema del reconocimiento facial en imágenes o explicado claramente, el sistema que detecta donde esta la cara de la gente en una imagen o video por las recientes modificaciones en el buscador de Google y Picasa. Anteriormente este era un terreno que solo dominaba Riya(ahora bastante abandonada), pero pronto salieron muchas aplicaciones como PolarRose o Picollator abriendo camino a las aplicaciones para esta nueva tecnóloga de búsqueda y comparación mas "humana".
Pues bien si ahora quieres tu seguir los pasos de esta gente lo podemos conseguir gracias a varios proyectos libres pero el que nos va a servir para usarlo con PHP va a ser OpenCV desarrollado por Intel.
OpenCV es una librería que se encarga de reconocer caras, cuerpos, gestos... a partir de archivos XML que controlan y afinan los resultados.
Para poder utilizar esto en nuestros proyectos seguiremos las instrucciones de xarg.org.
Para instalar la librería correctamente en PHP:
- Instalar OpenCV (OpenCV 1.0.0)
- Download facedetect source package
- Descomprimir el archivo de codigo facedetect
- Ir a la carpeta facedetect desde la consola y escribir
phpize && ./configure && make && make install - Comprobar que tengamos
extension=facedetect.soen el archivophp.ini
Para compilar las instrucciones dentro de PHP directamente:
- Instalar OpenCV (OpenCV 1.0.0)
- Download facedetect source package
- Descomprimir el archivo de codigo facedetect en
$PHP_SOURCE_DIR/ext/facedetect - En el directorio raiz del codigo PHP ejecutar en la linea de comandos:
rm configure && ./buildconf --force - Configurar PHP con el comando
./configure --with-facedetect - Ejecutar
make && make install
(Para que todas las funciones de OpenCV funcionen correctamente necesita tener instalado en el sistema: pkgconfig, libpng, zlib, libjpeg, libtiff y python).
Una vez realizado eso tendremos dos nuevas instrucciones en nuestro lenguaje PHP instaladas.
Estas dos funciones son face_count() y face_detect() que respectivamente detectan cuantas caras hay en una imagen y donde están esas caras.
El metodo de utilizacion de ambas dunciones es realmente sencillo, solo tenemos que introducir como primer parámetro una imagen y como segundo el archivo XML suministrado por OpenCV o generado por nosotros a partir de su documentación para definir el tipo de detección:
Al no tener un servidor propio para experimentar todavía no he podido comprobar los pasos así que si alguien quiere confirmar que todo funciona correctamente seria todo un detalle que lo comentarais por aquí para comprobar que funciona.
[...] PHP, Reconocimiento facial en imágenes con PHP y OpenCV [...]
[...] Tierra 0: Reconocimiento facial en imágenes con PHP y OpenCV [...]
[...] En el tutorial de php ya vimos como se podía reconocer el texto de una imagen gracias a la librería phpOCR, hoy vamos a ir un poco más allá y empezaremos a reconocer rostros. [...]
me parece muy bien la libreria, solo que no he podido instalarla tengo instalado wamp 5
necesito reconocer las imagenes que me da una webcam
Hola @Fco,
y no te funcionaria mejor algo basado en Flash en ese caso?? o si tomas las imágenes internamente con el mismo servidor, un programa directamente mediante la consola del sistema haciendo una consulta vía php…
siento no poder servirte de mucha ayuda ya que no recuerdo bien las pruebas que hice con esta librería…
gracias antares500 por contestar
te explico a detalle que idea tengo en mente.
tengo una computadora y una webcam entonces necesito un modulo en php donde pueda registrar la entrada y salida de personal (40 personal) con solo ver la webcam.
me explico, y me imagino que con esta tecnologia podria hacer algo de eso.
hola @fco,
pues no estoy seguro de ello… lo que creo que tu buscas es que el sistema reconozca “quien” es quien entra o sale… y el articulo solo habla de detectar las caras, no de detectar a quien pertenecen…
De todas formas creo que seria mucho mas fácil utilizar algún sistema de control de usuarios basado en el sistema operativo nativamente y luego utilizar el valor recogido por el mismo programa con la base de datos..
no estoy seguro del propósito de tu proyecto, pero si es una simple función de seguridad, quizá sea mejor utilizar un programa con detección de movimiento por área como VitaminD que es bastante fácil de configurar y envía los datos x correo electrónico..
Hola, y mi pregunta es, como cargar la libreria en Windows, podeis indicarme algo de detalles.