domingo, 18 de mayo de 2014

Detectando esqueletos 3D Kinect.

Siguiendo con el Hilo del blog, en esta oportunidad hablare sobre lo elementos que se deben conocer para trabajar con los esqueletos creados por el sdk de kinect. Aquí va una imagen para que se den cuenta de lo que estamos hablando:





















Este esqueleto creado por el sdk kinect vendría a representar la captura de nuestro cuerpo y el método del sdk que proporciona este flujo de datos es SkeletonStream.Enable(); . El sdk de kinect detecta 20 articulaciones del cuerpo humano que aparecen etiquetadas en la imagen de arriba.
Ahora a lo mas practico, como capturamos estos datos:



Describiré los pasos mas importante que a cuanto codigo se deben entender bien:

Para el paso 1) debemos escribir en nuestro código SkeletonStream.Enable(); 

Para el paso 2) necesitaremos en nuestro código utilizar un event.handler para este caso
 e.OpenSkeletonFrame()

.. Previo al paso 3 y 4, en nuestro código necesitamos declarar esta variable:
  Skeleton[] esqueletos = null;

Para el paso 3)  esqueletos = new Skeleton[frameEsqueleto.SkeletonArrayLength];

Para el paso 4) .CopySkeletonDataTo(esqueletos);

Para el Paso 5)  foreach (Skeleton esqueleto in esqueletos) ..

Para el Paso 6) if (esqueleto.TrackingState == SkeletonTrackingState.Tracked) con esta sentencia estamos verificando si se detecta nuestro esqueleto o no.

Para el Paso 8) en nuestro código por ejemplo  JointType.HandRight, estaríamos eligiendo nuestra mano derecha ("la articulación").

Para representar este esqueleto del sdk, podemos usar canvas para ir uniendo cada articulación en este caso las 20 articulaciones, entonces sabiendo la posición o coordenadas de cada una ellas podemos ir dibujando y uniendo con lineas para formar el esqueleto y tener una representación por pantalla en nuestra aplicación de lo que esta capturando la kinect..