Loading [MathJax]/extensions/TeX/AMSsymbols.js

September 20, 2012

Dibujando con Kinect y Processing

Como mencionamos en exposiciones pasadas, estamos usando la librería SimpleOpenNI para hacer nuestros programas. A parte de esta librería hay otros elementos que necesitaremos, si tu quieres instalarlos y probarlos por ti mismo, los puedes descargar e instalar todos de una sola vez. Una compania  llamada Zigfu los ha empaquetado todos y están disponibles para instalar a un solo click en el siguiente enlace: 


El cual está disponibles para Windows y para Mac.

En esta ocasión las cosas esenciales que hace nuestro programa son las siguientes:
- Detectar el punto más cercano.
- Seguir el movimiento de ese punto actualizando la imagen constantemente
- Pintar la trayectoria de dicho movimiento con métodos simples como Stroke y line y dejar de actualizar para que dicha trayectoria no se borre.

Aqui una imagen del programa funcional:



Y el código que será explicado en clase:

import SimpleOpenNI.*;
SimpleOpenNI kinect;
int closestValue;
int closestX;
int closestY;
float lastX;
float lastY;
void setup(){
size(640,480);
kinect = new SimpleOpenNI(this);
kinect.enableDepth();
background(0);
}
void draw(){
closestValue = 8000;
kinect.update();
int[] depthValues = kinect.depthMap();
for(int y=0; y<480; y++){
for (int x =0;x<640;x++){
//int i = x+y*640;
int reversedX = 640-x-1;
int i = reversedX + y *640;
int currentDepthValue = depthValues[i];
if(currentDepthValue > 610 && currentDepthValue < 1525
&& currentDepthValue < closestValue){
closestValue = currentDepthValue;
closestX = x;
closestY = y;
}
}
}
//image(kinect.depthImage(), 0,0);
float interpolatedX = lerp(lastX, closestX, 0.3f);
float interpolatedY = lerp(lastY, closestY, 0.3f);
//Color ROJO
stroke(255,0,0);
strokeWeight(3);
//Se dibuja la linea del punto anterior al mas nuevo
line(lastX, lastY, interpolatedX, interpolatedY);
lastX = interpolatedX;
lastY = interpolatedY;
}
void mousePressed(){
background(0);
}
view raw drawing.pde hosted with ❤ by GitHub

No comments:

Post a Comment