From beff9b59540b437262a6f109496772aeafe75929 Mon Sep 17 00:00:00 2001 From: "johan.lachenal" Date: Sat, 3 Feb 2024 12:26:21 +0100 Subject: [PATCH] Add gestures to the test methods --- Sources/ConsoleApp/ConsoleApp.csproj | 9 +++++ Sources/ConsoleApp/Program.cs | 34 +++++++++++++++++-- Sources/KinectUtils/GestureManager.cs | 4 +++ Sources/Lib/BodyImageStream.cs | 18 +++++----- .../LibMyGesturesBank/MyGesturesBank.csproj | 2 -- .../LibMyGesturesBank/PostureHandsOnHead .cs | 5 +-- Sources/LibMyGesturesBank/RightHandUp.cs | 12 ------- Sources/LibMyGesturesBank/TwoHandsDragon.cs | 12 ------- 8 files changed, 58 insertions(+), 38 deletions(-) delete mode 100644 Sources/LibMyGesturesBank/RightHandUp.cs delete mode 100644 Sources/LibMyGesturesBank/TwoHandsDragon.cs diff --git a/Sources/ConsoleApp/ConsoleApp.csproj b/Sources/ConsoleApp/ConsoleApp.csproj index 11b775b..4d45df5 100644 --- a/Sources/ConsoleApp/ConsoleApp.csproj +++ b/Sources/ConsoleApp/ConsoleApp.csproj @@ -36,6 +36,7 @@ ..\packages\Microsoft.Kinect.2.0.1410.19000\lib\net45\Microsoft.Kinect.dll + @@ -54,6 +55,14 @@ + + {2d44487e-f514-4063-9494-2af1e8c9e9c8} + KinectUtils + + + {2496DFB1-EB55-47A1-A780-211E079B289D} + MyGesturesBank + {0751c83e-7845-4e5f-a5d3-e11aba393aca} Lib diff --git a/Sources/ConsoleApp/Program.cs b/Sources/ConsoleApp/Program.cs index fb7ff8d..b8f5ea7 100644 --- a/Sources/ConsoleApp/Program.cs +++ b/Sources/ConsoleApp/Program.cs @@ -1,11 +1,14 @@ using Lib; using Microsoft.Kinect; +using MyGesturesBank; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; +using System.Windows.Controls; namespace ConsoleApp { @@ -13,6 +16,32 @@ namespace ConsoleApp { static void Main(string[] args) { + KinectManager kinectManager = new KinectManager(); + Canvas skeletonCanvas = null; + KinectStreamsFactory Factory = new KinectStreamsFactory(kinectManager, skeletonCanvas); + BodyImageStream CurrentKinectStream = (BodyImageStream)Factory[KinectStreams.Body]; + CurrentKinectStream.Start(); + PostureHandUp handUpPosture = new PostureHandUp(); + PostureHandsOnHead handsOnHeadPosture = new PostureHandsOnHead(); + handUpPosture.GestureRecognized += (sender, e) => + { + Console.WriteLine("Posture Hand Up reconnue !"); + }; + handsOnHeadPosture.GestureRecognized += (sender, e) => + { + Console.WriteLine("Posture Hands On Head reconnue !"); + }; + Body body = null; + while (true) + { + body = CurrentKinectStream.Bodies.FirstOrDefault(); + if (body != null) + { + handUpPosture.TestGesture(body); + handsOnHeadPosture.TestGesture(body); + } + Thread.Sleep(50); + } // KinectManager kinectManager = new KinectManager(); // if (kinectManager.StartSensor()) // { @@ -38,7 +67,7 @@ namespace ConsoleApp // // Boucle pour tester les postures // while (true) // { - // Body body = kinectManager.GetNextBody(); // Méthode fictive pour obtenir les données du corps + // Body body = kinecManager.GetNextBody(); // Méthode fictive pour obtenir les données du corps // if (body != null) // { // handUpPosture.TestGesture(body); @@ -47,7 +76,8 @@ namespace ConsoleApp // Thread.Sleep(50); // Une petite pause pour ne pas surcharger le CPU // } - } + //} + } } } diff --git a/Sources/KinectUtils/GestureManager.cs b/Sources/KinectUtils/GestureManager.cs index d9e08a5..339375f 100644 --- a/Sources/KinectUtils/GestureManager.cs +++ b/Sources/KinectUtils/GestureManager.cs @@ -32,5 +32,9 @@ namespace KinectUtils { throw new NotImplementedException(); } + static public void StopAcquiringFrames() + { + throw new NotImplementedException(); + } } } diff --git a/Sources/Lib/BodyImageStream.cs b/Sources/Lib/BodyImageStream.cs index 8b7b9bc..eea0d35 100644 --- a/Sources/Lib/BodyImageStream.cs +++ b/Sources/Lib/BodyImageStream.cs @@ -153,20 +153,22 @@ namespace Lib if (bodyframe != null) { bodyframe.GetAndRefreshBodyData(this.bodies); - - Canvas.Children.Clear(); // nettoyer le Canvas avant de dessiner - - foreach (var body in this.bodies) + // nettoyer le Canvas avant de dessiner + if (Canvas != null) { - if (body.IsTracked) + Canvas.Children.Clear(); + foreach (var body in this.bodies) { - // dessiner le squelette - drawskeleton(body); + if (body.IsTracked) + { + // dessiner le squelette + drawskeleton(body); + } } } } } } } -} + } diff --git a/Sources/LibMyGesturesBank/MyGesturesBank.csproj b/Sources/LibMyGesturesBank/MyGesturesBank.csproj index 7a43ab1..aedd2ed 100644 --- a/Sources/LibMyGesturesBank/MyGesturesBank.csproj +++ b/Sources/LibMyGesturesBank/MyGesturesBank.csproj @@ -47,8 +47,6 @@ - - diff --git a/Sources/LibMyGesturesBank/PostureHandsOnHead .cs b/Sources/LibMyGesturesBank/PostureHandsOnHead .cs index 7ad19b9..4b8df45 100644 --- a/Sources/LibMyGesturesBank/PostureHandsOnHead .cs +++ b/Sources/LibMyGesturesBank/PostureHandsOnHead .cs @@ -20,10 +20,11 @@ namespace MyGesturesBank private bool IsHandNearHead(Joint hand, Joint head) { // Exemple de condition : la main est à moins de 30 cm de la tête - return Math.Sqrt( + double distance = Math.Sqrt( Math.Pow(hand.Position.X - head.Position.X, 2) + Math.Pow(hand.Position.Y - head.Position.Y, 2) + - Math.Pow(hand.Position.Z - head.Position.Z, 2)) < 0.3; + Math.Pow(hand.Position.Z - head.Position.Z, 2)); + return distance < 0.3 && distance > 0; } public override string GestureName => "Hands On Head"; diff --git a/Sources/LibMyGesturesBank/RightHandUp.cs b/Sources/LibMyGesturesBank/RightHandUp.cs deleted file mode 100644 index 259d3a5..0000000 --- a/Sources/LibMyGesturesBank/RightHandUp.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace LibMyGesturesBank -{ - internal class RightHandUp - { - } -} diff --git a/Sources/LibMyGesturesBank/TwoHandsDragon.cs b/Sources/LibMyGesturesBank/TwoHandsDragon.cs deleted file mode 100644 index a5e9d5f..0000000 --- a/Sources/LibMyGesturesBank/TwoHandsDragon.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace LibMyGesturesBank -{ - internal class TwoHandsDragon - { - } -}