Itinerario
• ¿Qué es el Skeletal tracking?• Sentado o de pie• Partes del esqueleto• Código• Recomendaciones
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.
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
1. Declarar el Esqueleto
• Skeleton[] totalSkeleton = new Skeleton[6];
• // El número 6 es la cantidad máxima de esqueletos puede detectar.
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);
}
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();
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();
}}
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.