Automatización de toma de fotografías Parte 2

13
Kinect Captura Automática de fotografías con el esqueleto

Transcript of Automatización de toma de fotografías Parte 2

KinectCaptura Automática de fotografías con el esqueleto

Objetivo

• Tomar la fotografía cuando Kinect detecte la mano derecha.

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

Partes del esqueleto

Default Seated

CódigoSDK 1.8

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.

Maria Elena Abrego N.

MVP Kinect for Windows 2015

@Maleny_Abrego

malenyabrego.wordpress.com

/Malenymsp