Iniciar sesión

Redondela en Foto

Shotwell Faces Tool: Informe Semanal 03 y 04

::

El plan para estas últimas dos semanas era escribir un programa de ejemplo en Vala con GTK+ y OpenCV, para demostrar que podemos tener detección facial en Shotwell. He estado intentando luchar contra las incompatibilidades entre OpenCV y GKT+ 3, pero he perdido.

Yo pensaba que esto sería fácil, ya que yo ya había escrito algo de código para la funcionalidad de detección facial en Shotwell utilizando OpenCV al final del año pasado, pero el problema es que ahora Shotwell utiliza GTK+ 3, y el módulo highgui de OpenCV, el cual se utiliza para proveer de una interfaz simple pero multiplataforma —pero también para cargar imágenes IPL, el formato que espera OpenCV— utiliza GTK+ 2, por lo que no pueden estar en el mismo proceso.

Por lo tanto, dos problemas a los que he tenido que enfrentarme:

  • Dependencias entre los módulos objdetect y highgui de OpenCV: Los únicos módulos que son esenciales para la detección facial son core y objdetect, pero por alguna razón que desconozco, objdetect tiene dependencias con highgui así que la biblioteca highgui se incluye automáticamente en el binario si incluyes objdetect. He informado sobre el error en [1], pero lo han cancelado —se conoce que no les importa mucho la integración entre OpenCV y otros programas... En el reporte de error cancelado, han comentado que se puede compilar OpenCV sin highgui —y es correcto y todo funciona perfectamente, pero ello plantea dos problemas:
    • Estaríamos añadiendo la necesidad de compilar OpenCV —cosa que, por cierto, yo he hecho y no es para nada complicada— para poder compilar Shotwell.
    • No se si habría problemas con los binarios distribuidos de Shotwell —por ejemplo los de Ubuntu—, ya que estarían enlazados con una versión de OpenCV sin highgui, mientras que los binarios de OpenCV presentes en el sistema probablemente habrán sido compilados con él.
  • El otro problema es que, sin highgui, perdemos la habilidad de cargar imágenes en formato IPL, por lo que he necesitado encontrar una forma de convertir pixbufs de GDK —o surfaces de Cairo, por ejemplo— al formato IPL... y he estado buscando alguna forma de hacerlo pero simplemente no he encontrado nada —hasta que Álvaro Marcos Ramiro, un español que yo sabía que había hecho esto en el pasado —porque encontré ciertos fragmentos de código en los que se intuye que está haciéndolo, pero la parte importante, la conversión entre formatos, no estaba —contestó mi correo pidiéndole ayuda.

Así que el segundo problema está solucionado, pero sigue existiendo el problema con las dependencias entre los módulos objdetect y highgui, así que he continuado siguiendo una vía alternativa: He creado un programa independiente al cual llamará Shotwell para realizar la detección facial.

A partir de un programa de ejemplo que puedes encontrar en el tarball oficial de OpenCV [2] —en /samples/c/facedetect.cpp— he creado un programa que procesa un archivo de imagen e imprime la información de las caras que ha encontrado en ella —puedes verlo en [3], por favor consulta el README para más información sobre el mismo o, por supuesto, pregúntame lo que quieras.

He empezado a trabajar en la integración de esta nueva funcionalidad en Shotwell, pero ahora mismo me encuentro de nuevo trasteando con el programa de detección facial, ya que la gente de Yorba opina que es más importante probar que OpenCV puede realizar la tarea de la detección facial de una forma fiable, e incluso intentar realizar reconocimiento facial, algo que si funcionase bien sería impresionante.

[1] http://code.opencv.org/issues/2024

[2] http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.1/

[3] https://github.com/Sanva/facedetect

NOTA: Esto es una traducción del original en inglés, aquí → http://sanva.net/blog/108/

Tags: Google Summer of Code, Shotwell

Comentarios (0)

Escribe tu comentario

Nos encantará que des tu opinión, para lo cual puedes utilizar el siguiente formulario. Por favor, intenta que tus comentarios estén relacionados con este artículo. Así mismo te pedimos que no faltes al respeto a nadie, y que no escribas como en un teléfono móvil. Cualquier comentario fuera de lugar (insultos, spam, off-topic, etc) puede ser borrado sin previo aviso.

¿No tienes una cuenta?

Regístrate

Es fácil, rápido y gratuito.

Inicia sesión en sanva.net

He olvidado mis datos de acceso.

Redondela en Foto 8.6.11 - XHTML 1.0 Strict - CSS - Política de Privacidad