1) Crear un nuevo proyecto
2) Referenciar la librería Microsoft.Kinect.dll
3) Declarar el namespace del Kinect
Básicamente todos los proyectos que hagamos con el SDK Kinect van a necesitar esos pasos, no importa si estamos haciendo aplicaciones WPF, o aplicaciones Windows Form, un juego XNA o incluso una aplicación de consola.
Para entender correctamente como realizar aplicaciones con el Kinect debemos tener presente que el Kinect es un dispositivo de entrada a nuestro programa. Ademas esta mandando información de color, de profundidad, y de esqueletos todo el tiempo que este conectado y es importante manejar este flujo de datos.
La primera aplicación que vamos a realizar, es un programa de consola. El objetivo del programa es que se nos muestre en consola la información de profundidad que el Kinect entrega.
Para crear una nueva aplicación, abrimos el Visual Studio y creamos un nuevo proyecto de consola.
Una vez creamos el proyecto vamos a encontrarnos con una interfaz similar a esta:
Lo siguiente es referenciar la libreria del SDK Kinect. Hacemos clic derecho en "References" y damos clic en la opción "Agregar referencia"
En la ventana agregar referencia, en la pestaña .NET, buscamos la libreria "Microsoft.Kinect"
Ahora, en la parte de arriba de nuestro código .cs agregamos la linea "using Microsoft.Kinect;" y de esta manera agregamos toda la funcionalidad del SDK Kinect a nuestro proyecto. Ahora ya tenemos nuestro entorno listo para crear nuestro programa.
Vamos a realizar el siguiente código:
Lo único que hace el programa es mostrar el dato numero 1000 de ese vector cada vez que el Kinect manda una imagen nueva al programa.
using System; using System.Collections.Generic; using System.Linq; using System.Text; //Incluimos la siguiente linea para decirle al programa que vamos a trabajar //con la funciones del SDK Kinect using Microsoft.Kinect; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { //Instanciar un objeto sensor de tipo KinectSensor. //El indice "0" indica que es el primer kinect conectado KinectSensor sensor = KinectSensor.KinectSensors[0]; //Inicializar las camaras sensor.DepthStream.Enable(); //Declarar el evento que se ejecuta cuando un cuadro de profundidad //este listo para su uso. sensor.DepthFrameReady += new EventHandlerEl kinect nos entrega una imagen de profundidad con unas dimensiones de 640x480 donde cada pixel representa una distancia (desde el kinect hasta el objeto que esta sensando). El kinect entrega esa imagen de profundidad como un vector (cada fila de la imagen una detras de otra en el vector) por lo que tenemos un vector de 307200 posiciones (640*480) cada posición del vector representa un pixel en la imagen de profundidad.(sensor_DepthFrameReady); //Comenzar a usar el sensor sensor.Start(); //El programa se ejecuta hasta que se presione la tecla espacio while (Console.ReadKey().Key != ConsoleKey.Spacebar) { } } static void sensor_DepthFrameReady(object sender, DepthImageFrameReadyEventArgs e) { //Asigno a la variable cuadroProfundidad el frame que me entrega el kinect var cuadroProfundidad = e.OpenDepthImageFrame(); //Si el cuadro esta vacio no retorna nada y sale del evento if (cuadroProfundidad == null) { return; } //Creamos un vector del mismo tamaño de los datos de la imagen de profundidad short[] datos = new short[cuadroProfundidad.PixelDataLength]; //Copiamos los datos y los metemos al vector recien creado cuadroProfundidad.CopyPixelDataTo(datos); //Mostramos en consola el dato numero 1000 de ese vector Console.WriteLine(datos[1000]); } } }
Lo único que hace el programa es mostrar el dato numero 1000 de ese vector cada vez que el Kinect manda una imagen nueva al programa.
No hay comentarios:
Publicar un comentario