Hola!
Ya comenté hace tiempo que la cámara del Kinect One es mucho más ponente que la actual; con esto podemos tener acceso a elementos como el latido del corazón de una persona, fotos en HD, etc. El SDK está progresando y nos da algunas opciones interesantes como por ejemplo, la capacidad de detectar manos abiertas o cerradas. Update: Victor me ha recordado que esto ya lo teníamos en el SDK 1.7 y superior, no tan explícito como aquí.
Lo que haré es partir del ejemplo de consola de hace unos días (post) y sobre el mismo cambiaré la rutina que procesa el reconocimiento de Bodies:
1: static void _bodyFrameReader_FrameArrived(object sender, BodyFrameArrivedEventArgs e)
2: {
3: var frameReference = e.FrameReference;
4: var frame = frameReference.AcquireFrame();
5: if (frame == null) return;
6: using (frame)
7: {
8: frame.GetAndRefreshBodyData(_bodies);
9: foreach (var body in _bodies)
10: {
11: if (!body.IsTracked) continue;
12: if (body.HandRightState == HandState.Unknown) continue;
13: var handRightState = body.HandRightState;
14: if (_lastHandRightState != body.HandRightState)
15: {
16: Console.WriteLine("Right Hand State:{0}", handRightState);
17: _lastHandRightState = body.HandRightState;
18: }
19: }
20: }
21: }
Como se puede ver en el ejemplo anterior, una vez que hemos definido que el body está trackeable (línea 11), luego trabajaremos con la propiedad HandRightState (línea 13). La misma posee los valores Open, Close, Unknow, entre otros.
El siguiente video muestra un ejemplo de esta app en ejecución:
Y el disclaimer:
“This is preliminary software and/or hardware and APIs are preliminary and subject to change“
Saludos @ Home
El Bruno
Leave a comment