Visión artificial con Processing: detección de rostros en tiempo real utilizando la librería OpenCV

En este tutorial vamos a lograr enlazar una aplicación creada en Processing con la cámara y a su vez hacer un análisis de la imagen recibida en tiempo real para lograr una detección de los rostros gracias a las funciones tan útiles que nos provee la librería de OpenCV para análisis y procesamiento de imágenes.

Pero antes, ¿Qué es OpenCV? es una biblioteca de visión artificial de uso libre y gratuito. Esta biblioteca es utilizada en infinidad de aplicaciones actualmente, debido a su gran alcance y su libre implementación.


Instalando librerías necesarias

Para instalar librerías y dependencias en Processing simplemente nos vamos a Sketch ->importar biblioteca -> Añadir biblioteca

 

1Una vez dentro nos aparece una ventana, donde tendremos que buscar las 2 librerías palomeadas en la imagen y darle en instalar a cada una.

2

La biblioteca de Video nos dará acceso a la cámara para obtener las imágenes en tiempo real. Concluido esto ya estamos listos para programar.


Creando clase Cara  e importando librerías

procedemos ha crear una clase dentro de nuestro archivo en Processing para la figura que estará enfocando los rostros y poder manipularla dependiendo del evento de detección.

 

4

5

 

 

 

 

 

 

 

 

En esta clase como se menciono nos encargaremos solamente de darle forma al recuadro para marcar la posición del rostro.

Después vamos a importar las librerías necesarias:

6

La librería gab.opencv nos trae lo necesario para el procesamiento de imágenes, mientras que processing.video nos da acceso a la cámara web. La ultima librería es para utilizar funciones nativas de java.


Programando el setup

Para las configuraciones iniciales del programa necesitamos inicializar varias cosas desde la función setup

7

OpenCv cuenta con varias funciones de detección por defecto, en este caso decidimos utilizar CASCADE_FRONTALFACE, pero si lo quisiéramos también podríamos usar otra función para detectar nariz u ojos por ejemplo.


Función de detección de rostro

Para elaborar una función que detecta el rostro cicladamente desde la función draw de nuestro programa necesitamos verificar que varias condiciones se cumplan para los distintos eventos que pueden ser disparados en cada cambio de imagen.8

9

10

11


Ultimo paso: Función Draw

12

Esta función es la que se estará ejecutando constantemente, lo que hace es invocar a la función de detectar un rostro cada vez que el evento se dispara. También en la invocación de loadImage carga los cuadros por segundo como imágenes independientes son analizadas.


Resultados

test

Código fuente: https://drive.google.com/open?id=1a-Z5EfC0hDfgnVc2MYhS1DllRL0vVtVi

Referencias

https://processing.org/reference/libraries/

Detectando movimiento con OpenCV y Processing

Deja un comentario