Introducción
Una de las características que quería aprender a implementar con OpenCV era la detección de movimiento, esto me permitirá implementar formas de interacción interesantes (y bastante simples de generar) entre el usuario y el sketch a través de la cámara web.
En pocas palabras, la técnica para detectar movimiento que se describe a continuación se basa en generar una imagen monocromática con los píxeles que han cambiado entre dos cuadros del video. Para hacer esto se siguen los pasos mostrados a continuación.
|
|
Para verificar si ha sucedido movimiento en una determinada área de la imagen se debe verificar si los píxeles que pertenecen a esa área se encuentran blancos (si hubo) o no. Esta información se obtiene utilizando el método get(int x, int y) del objeto PImage el cual retorna el color del píxel seleccionado. Por facilidad se recomienda que se obtenga el brillo (brightness(color)) de este píxel para su comparación.
El siguiente código revisa un área cuadrada de píxeles en búsqueda de movimiento en esa zona.
for(int px=x; px<x+size; px++)
for(int py=y; py<y+size; py++)
if (px < width && px > 0 && py < height && py > 0)
if (brightness(mImage.get(px, py)) > 127)
count ++;
Screenshot
Enlaces
Artículos relacionados:
- Instalación de la librería de OpenCV en Processing bajo GNU/Linux Mint 12
- Poniendo sombreros a las personas con OpenCV y Processing
- Ubicando caras en una webcam con OpenCV y Processing
- Búsqueda del punto mas cercano con el Kinect utilizando Processing y Simple-OpenNI
- Utilizar la cámara infraroja (IR) del Kinect utilizando Processing



