Presentación que incluye lo básico para incorporar el Skeletal tracking a una aplicación con Kinect para Windows 1 o Kinect 360, este te permite tomar una fotografía al momento de que Kinect detecta la mano derecha.
Código completo: http://bit.ly/1O2IX6F
3. Itinerario
• ¿Qué es el Skeletal tracking?
• Sentado o de pie
• Partes del esqueleto
• Código
• Recomendaciones
4. Skeletal tracking
• Skeletal tracking significa seguimiento de
esqueleto y se basa en un algoritmo que logra
identificar partes del cuerpo, gestos y/o posturas
de quienes están en el campo de visión del
sensor.
5. Seated or Default
Es el esqueleto
predeterminado en el
cual Kinect identifica
las 20 partes del
cuerpo
fundamentales en las
extremidades y en el
rostro del cuerpo
humano.
Default
Es el esqueleto que
Kinect detecta si el
usuario esta sentado,
solo cuenta con 10
puntos de
identificación, se
utiliza comúnmente
cuando el usuario
esta cerca del sensor.
Seated
8. 1. Declarar el Esqueleto
• Skeleton[] totalSkeleton = new Skeleton[6];
• // El número 6 es la cantidad máxima de
esqueletos puede detectar.
9. 2. Habilitamos el esqueleto
if (!this.sensor.SkeletonStream.IsEnabled)
{
// Habilitamos el esqueleto.
this.sensor.SkeletonStream.Enable();
// Determinamos el tipo de esqueleto.
this.sensor.SkeletonStream.TrackingMode =
SkeletonTrackingMode.Seated;
// Llamamos al método SkeletonFrameReady.
this.sensor.SkeletonFrameReady += new
EventHandler<SkeletonFrameReadyEventArgs>(sensor_SkeletonFrameReady);
}
10. 3. Método sensor_SkeletonFrameReady
using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
{
// Verifica que se encontró un esqueleto.
if (skeletonFrame == null)
{
return;
}
//copia la información del frame en la colección
skeletonFrame.CopySkeletonDataTo(totalSkeleton);
//Obtiene el primer esqueleto
Skeleton firstSkeleton = (from trackskeleton in totalSkeleton
where trackskeleton.TrackingState == SkeletonTrackingState.Tracked
select trackskeleton).FirstOrDefault();
11. 3. Método sensor_SkeletonFrameReady
//Verificamos si el primer esqueleto regresa nulo, es decir no encontrado
if (firstSkeleton == null)
{
return;
}
//Aquí es donde detectamos la mano derecha
if (firstSkeleton.Joints[JointType.HandRight].TrackingState ==
JointTrackingState.Tracked)
{
this.saveImage();
this.sensor.Stop();
}
}
12. Recomendaciones
• Dependiendo del tipo de aplicación que estés
haciendo, piensa bien en que parte del cuerpo
usaras para tomar la fotografía.
• Toma muy en cuenta la ubicación que tendrá
Kinect para que tu aplicación sea más eficiente.
13. Maria Elena Abrego N.
MVP Kinect for Windows 2015
@Maleny_Abrego
malenyabrego.wordpress.com
/Malenymsp