domingo, 20 de abril de 2014

Primera Aplicacion sencilla con Kinect en Visual Studio 2013

Teniendo ya todo listo de lo descrito en el post anterior procederemos a crear una aplicación sencilla que hace uso de la camara RGB de Kinect.

  1. Primero debemos crear un proyecto de tipo aplicación WPF.
  2. Para poder operar con la librería de kinect, debemos agregar la referencia Microsoft.Kinect
  3. Habiendo agregado la referencia, debemos agregar el namespace en el código fuente using Microsoft.Kinect;
  4. Ahora debemos agregar un control image, lo expandimos sobre toda la ventana.
  5. Ya con el control image listo, debemos agregar un evento a la ventana. Desde propiedades buscamos el evento loaded y clic!
Ahora completando el codigo iré documentando que significa cada cosa.

using Microsoft.Kinect;
namespace CamaraWebSencilla
{
    /// <summary>
    /// Lógica de interacción para MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        KinectSensor miKinect;
        public MainWindow()
        {
            InitializeComponent();
        }
        private void Window_Loaded(object sender, RoutedEventArgs e) //nuestro método paso 5
        {
            miKinect = KinectSensor.KinectSensors.FirstOrDefault(); // Almacenamos nuestra kinect en esta variable para así llamar sus funciones. //
            miKinect.Start(); // Aca le indicamos que inicio.
            miKinect.ColorStream.Enable(); //Este método da inicio a la señal de flujo de stream de la cámara (Habilita la cámara).
            miKinect.ColorFrameReady += miKinect_ColorFrameReady; //Con este controlador de eventos le decimos a la aplicación que debe hacer cuando detecte el flujo de datos.
        }
        void miKinect_ColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
        {
            using (ColorImageFrame frameImagen = e.OpenColorImageFrame())
            {
                if (frameImagen == null)
                   return;
                byte[] datosColor = new byte[frameImagen.PixelDataLength];
                frameImagen.CopyPixelDataTo(datosColor);
                mostrarVideo.Source = BitmapSource.Create(
                    frameImagen.Width, frameImagen.Height,
                    96,
                    96,
                    PixelFormats.Bgr32,
                    null,
                    datosColor,
                    frameImagen.Width * frameImagen.BytesPerPixel
                    );
            }
        }
    }
}
Ejecutando nuestro proyecto, podremos tener una cámara web sencilla con kinect.


No hay comentarios:

Publicar un comentario