Hola!
En el ejemplo de hoy veremos como hacer un Hello World con el nuevo SDK. En el caso de Kinect, el Hello World es básicamente una app que detecte una persona frente al sensor kinect.
1. Crear una app de Consola
2. Agregar la referencia a Microsoft.Kinect v2.0
4. Importante: Es necesario cambiar la configuración de la referencia para que no se haga una copia local de la misma.
5. Modificamos el proyecto para que compile para X86 o X64. En este modo todavía no funcionan los proyectos con build del tipo ANY CPU.
6. Luego agregamos el siguiente código a la app de consola
1: using System;
2: using Microsoft.Kinect;
3:
4: namespace ConsoleApplication1
5: {
6: class Program
7: {
8: private static KinectSensor _kinectSensor;
9: private static Body[] _bodies;
10: private static BodyFrameReader _bodyFrameReader;
11:
12: static void Main(string[] args)
13: {
14: // gets the default sensor
15: _kinectSensor = KinectSensor.Default;
16: if (null != _kinectSensor)
17: {
18: // open the sensor
19: _kinectSensor.Open();
20:
21: // init body recognition
22: _bodies = new Body[_kinectSensor.BodyFrameSource.BodyCount];
23: _bodyFrameReader = _kinectSensor.BodyFrameSource.OpenReader();
24: _bodyFrameReader.FrameArrived += _bodyFrameReader_FrameArrived;
25:
26: // sensor init done!
27: Console.WriteLine("Sensor init done !");
28: }
29:
30: Console.ReadLine();
31: }
32:
33: static void _bodyFrameReader_FrameArrived(object sender, BodyFrameArrivedEventArgs e)
34: {
35: var frameReference = e.FrameReference;
36: var frame = frameReference.AcquireFrame();
37: if (frame == null) return;
38: using (frame)
39: {
40: // update bodycount
41: frame.GetAndRefreshBodyData(_bodies);
42: foreach (var body in _bodies)
43: {
44: if (body.IsTracked)
45: {
46: Console.WriteLine("Body Tracked:" + body.TrackingId);
47: }
48: }
49: }
50: }
51: }
52: }
Antes de seguir veamos algunos puntos interesantes del nuevo SDK
- línea 15. ya podemos tener acceso al sensor por defecto conectado a nuestro ordenador.
- líneas 21 a 24; ahora se introduce el concepto de Body para el reconocimiento. Antes eran Skeletons
- líneas 33 a 50; una vez detectado un frame de Body, podemos parsear el mismo y llenar un array de bodies para comenzar a trabajar con los mismos
7. Lanzamos la app KinectService
8. Ejecutamos nuestra applicación y ya tenemos una app que detecta bodies con el nuevo Kinect for Windows SDK v2.
Y como siempre
“This is preliminary software and/or hardware and APIs are preliminary and subject to change“
Saludos @ Home
El Bruno
Leave a reply to elbruno Cancel reply