image

Buenas,

hoy toca modificar un poco el código de la aplicación que muestra el contenido de la cámara web de Kinect para mostrar en este caso, la imagen procesada del Depth Sensor de Kinect en una aplicación WPF. La imagen que nos entrega el Depth Sensor es el resultado del proceso de la información que retorna el sensor infrarojo que posee Kinect junto con la imagen de la cámara de Kinect. Con estos 2 elementos (y un par de cosillas más) Kinect consigue armar un modelo con cierta profundidad que es el que nos entrega el Depth Sensor.

La gran diferencia con el post anterior es que en este caso trabajaremos con el evento DepthFrameReady() (línea 42) que es el que nos entregará la imagen procesada del DepthSensor. A partir de este momento, trabajamos con una clase externa DepthImageHelper() para procesar la imagen del sensor en un formato compatible con un IMAGE.

   1: namespace ElBruno.KinectViewer

   2: {

   3:     using System.Windows;

   4:     using Microsoft.Research.Kinect.Nui;

   5:  

   6:     /// <summary>

   7:     /// Interaction logic for MainWindow.xaml

   8:     /// </summary>

   9:     public partial class MainWindow

  10:     {

  11:         private Runtime kinect;

  12:         private InteropBitmapHelper imageHelper;

  13:         private RuntimeOptions RuntimeOptions { get; set; }

  14:         

  15:         public MainWindow()

  16:         {

  17:             InitializeComponent();

  18:             Loaded += MainWindowLoaded;

  19:         }

  20:  

  21:         void MainWindowLoaded(object sender, RoutedEventArgs e)

  22:         {

  23:             InitKinect();

  24:         }

  25:  

  26:         void InitKinect()

  27:         {

  28:             if (Runtime.Kinects.Count == 0)

  29:                 return;

  30:             kinect = Runtime.Kinects[0];

  31:             RuntimeOptions = RuntimeOptions.UseDepthAndPlayerIndex | 

  32:                 RuntimeOptions.UseSkeletalTracking | 

  33:                 RuntimeOptions.UseColor;

  34:             kinect.Initialize(RuntimeOptions);

  35:             kinect.DepthStream.Open(ImageStreamType.Depth, 2, ImageResolution.Resolution320x240,

  36:                 RuntimeOptions.HasFlag(RuntimeOptions.UseDepthAndPlayerIndex) || 

  37:                 RuntimeOptions.HasFlag(RuntimeOptions.UseSkeletalTracking) ? 

  38:                 ImageType.DepthAndPlayerIndex : ImageType.Depth);

  39:             kinect.DepthFrameReady += this.KinectDepthFrameReady;

  40:         }

  41:  

  42:         void KinectDepthFrameReady(object sender, ImageFrameReadyEventArgs e)

  43:         {

  44:             var planarImage = e.ImageFrame.Image;

  45:             var depthImageHelper = new DepthImageHelper();

  46:             byte[] convertedDepthBits = depthImageHelper.ConvertDepthFrame(planarImage.Bits, RuntimeOptions);

  47:  

  48:             if (this.imageHelper == null)

  49:             {

  50:                 this.imageHelper = new InteropBitmapHelper(planarImage.Width, planarImage.Height, convertedDepthBits);

  51:                 this.DepthSensorViewer.Source = this.imageHelper.InteropBitmap;

  52:             }

  53:             else

  54:             {

  55:                 this.imageHelper.UpdateBits(convertedDepthBits);

  56:             }

  57:         }

  58:     }

  59: }

 

Si ejecutamos la aplicación podremos ver el resultado del DepthSensor similar a la siguiente imagen.

image

El código del ejemplo lo pueden descargar desde

https://skydrive.live.com/embedicon.aspx/Code%20Samples/2011%2011%2017%20ElBruno.KinectViewer%20DepthSensor.zip?cid=bef06dffdb192125&sc=documents

 

Saludos @ Here

El Bruno

   

Fuente: http://en.wikipedia.org/wiki/Kinect

4 responses to “[#KINECT] HowTo: Mostrar el contenido del depth sensor en nuestras aplicaciones”

  1. […] [#KINECT] HowTo: Mostrar el contenido del depth sensor en nuestras aplicaciones […]

    Like

  2. […] del pequeño post que escribí hace 2 días [#KINECT] HowTo: Mostrar el contenido del depth sensor en nuestras aplicaciones, hoy veremos un poco más el detalle o las tripas de este mecanismo. Así como el visor de la […]

    Like

  3. […] [#KINECT] HowTo: Mostrar el contenido del depth sensor en nuestras aplicaciones […]

    Like

  4. […] [#KINECT] HowTo: Mostrar el contenido del depth sensor en nuestras aplicaciones […]

    Like

Leave a reply to [#KINECT] Veamos un poco de información sobre como funciona el sensor de profundidad – El Bruno Cancel reply

Discover more from El Bruno

Subscribe now to keep reading and get access to the full archive.

Continue reading