diff --git a/Sources/ConsoleApp/App.config b/Sources/ConsoleApp/App.config
new file mode 100644
index 0000000..56efbc7
--- /dev/null
+++ b/Sources/ConsoleApp/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/ConsoleApp/ConsoleApp.csproj b/Sources/ConsoleApp/ConsoleApp.csproj
new file mode 100644
index 0000000..e0bb9e2
--- /dev/null
+++ b/Sources/ConsoleApp/ConsoleApp.csproj
@@ -0,0 +1,67 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {27D9C879-52BB-4BD7-B08D-63A534AC6D7E}
+ Exe
+ ConsoleApp
+ ConsoleApp
+ v4.7.2
+ 512
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\packages\Microsoft.Kinect.2.0.1410.19000\lib\net45\Microsoft.Kinect.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {2496dfb1-eb55-47a1-a780-211e079b289d}
+ LibMyGesturesBank
+
+
+ {0751c83e-7845-4e5f-a5d3-e11aba393aca}
+ Lib
+
+
+
+
\ No newline at end of file
diff --git a/Sources/ConsoleApp/Program.cs b/Sources/ConsoleApp/Program.cs
new file mode 100644
index 0000000..dc436f5
--- /dev/null
+++ b/Sources/ConsoleApp/Program.cs
@@ -0,0 +1,54 @@
+using Lib;
+using LibMyGesturesBank;
+using Microsoft.Kinect;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace ConsoleApp
+{
+ internal class Program
+ {
+ static void Main(string[] args)
+ {
+ KinectManager kinectManager = new KinectManager();
+ if (!kinectManager.StartSensor())
+ {
+ Console.WriteLine("Kinect n'est pas connecté ou non reconnu.");
+ return;
+ }
+
+ // Créez les instances de vos postures
+ PostureHandUp handUpPosture = new PostureHandUp();
+ PostureHandsOnHead handsOnHeadPosture = new PostureHandsOnHead();
+
+ // Abonnez-vous aux événements de reconnaissance de posture
+ handUpPosture.GestureRecognized += (sender, e) =>
+ {
+ Console.WriteLine("Posture Hand Up reconnue !");
+ };
+
+ handsOnHeadPosture.GestureRecognized += (sender, e) =>
+ {
+ Console.WriteLine("Posture Hands On Head reconnue !");
+ };
+
+ // Boucle pour tester les postures
+ while (true)
+ {
+ Body body = kinectManager.GetNextBody(); // Méthode fictive pour obtenir les données du corps
+ if (body != null)
+ {
+ handUpPosture.TestGesture(body);
+ handsOnHeadPosture.TestGesture(body);
+ }
+
+ Thread.Sleep(50); // Une petite pause pour ne pas surcharger le CPU
+ }
+ }
+
+ }
+}
diff --git a/Sources/ConsoleApp/Properties/AssemblyInfo.cs b/Sources/ConsoleApp/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..d40f227
--- /dev/null
+++ b/Sources/ConsoleApp/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Les informations générales relatives à un assembly dépendent de
+// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
+// associées à un assembly.
+[assembly: AssemblyTitle("ConsoleApp")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("ConsoleApp")]
+[assembly: AssemblyCopyright("Copyright © 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
+// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
+// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
+[assembly: ComVisible(false)]
+
+// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
+[assembly: Guid("27d9c879-52bb-4bd7-b08d-63a534ac6d7e")]
+
+// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
+//
+// Version principale
+// Version secondaire
+// Numéro de build
+// Révision
+//
+// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
+// en utilisant '*', comme indiqué ci-dessous :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Sources/ConsoleApp/packages.config b/Sources/ConsoleApp/packages.config
new file mode 100644
index 0000000..f7f19c3
--- /dev/null
+++ b/Sources/ConsoleApp/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Sources/KinectSolution.sln b/Sources/KinectSolution.sln
index d187b5e..9911da0 100644
--- a/Sources/KinectSolution.sln
+++ b/Sources/KinectSolution.sln
@@ -7,6 +7,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfApp", "WpfApp\WpfApp.csp
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lib", "Lib\Lib.csproj", "{0751C83E-7845-4E5F-A5D3-E11ABA393ACA}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibMyGesturesBank", "LibMyGesturesBank\LibMyGesturesBank.csproj", "{2496DFB1-EB55-47A1-A780-211E079B289D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleApp", "ConsoleApp\ConsoleApp.csproj", "{27D9C879-52BB-4BD7-B08D-63A534AC6D7E}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -21,6 +25,14 @@ Global
{0751C83E-7845-4E5F-A5D3-E11ABA393ACA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0751C83E-7845-4E5F-A5D3-E11ABA393ACA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0751C83E-7845-4E5F-A5D3-E11ABA393ACA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {2496DFB1-EB55-47A1-A780-211E079B289D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {2496DFB1-EB55-47A1-A780-211E079B289D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {2496DFB1-EB55-47A1-A780-211E079B289D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {2496DFB1-EB55-47A1-A780-211E079B289D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {27D9C879-52BB-4BD7-B08D-63A534AC6D7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {27D9C879-52BB-4BD7-B08D-63A534AC6D7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {27D9C879-52BB-4BD7-B08D-63A534AC6D7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {27D9C879-52BB-4BD7-B08D-63A534AC6D7E}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Sources/Lib/KinectManager.cs b/Sources/Lib/KinectManager.cs
index 1d100e9..ac50260 100644
--- a/Sources/Lib/KinectManager.cs
+++ b/Sources/Lib/KinectManager.cs
@@ -100,4 +100,4 @@ namespace Lib
}
}
- }
+ }
\ No newline at end of file
diff --git a/Sources/LibMyGesturesBank/BaseGesture.cs b/Sources/LibMyGesturesBank/BaseGesture.cs
new file mode 100644
index 0000000..7ba9866
--- /dev/null
+++ b/Sources/LibMyGesturesBank/BaseGesture.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System;
+using Microsoft.Kinect;
+
+namespace LibMyGesturesBank
+{
+ public abstract class BaseGesture
+ {
+ // Événement déclenché lorsque le geste est reconnu
+ public event EventHandler GestureRecognized;
+
+ // Nom du geste - marqué comme virtual pour permettre la substitution
+ public virtual string GestureName { get; protected set; }
+
+ // Méthode abstraite pour tester le geste
+ public abstract void TestGesture(Body body);
+
+ // Méthode protégée pour déclencher l'événement GestureRecognized
+ protected virtual void OnGestureRecognized()
+ {
+ GestureRecognized?.Invoke(this, EventArgs.Empty);
+ }
+ }
+
+
+}
diff --git a/Sources/LibMyGesturesBank/LibMyGesturesBank.csproj b/Sources/LibMyGesturesBank/LibMyGesturesBank.csproj
new file mode 100644
index 0000000..805bf1d
--- /dev/null
+++ b/Sources/LibMyGesturesBank/LibMyGesturesBank.csproj
@@ -0,0 +1,63 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {2496DFB1-EB55-47A1-A780-211E079B289D}
+ Library
+ Properties
+ LibMyGesturesBank
+ LibMyGesturesBank
+ v4.7.2
+ 512
+ true
+
+
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+
+
+
+ ..\packages\Microsoft.Kinect.2.0.1410.19000\lib\net45\Microsoft.Kinect.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {0751c83e-7845-4e5f-a5d3-e11aba393aca}
+ Lib
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/LibMyGesturesBank/Posture.cs b/Sources/LibMyGesturesBank/Posture.cs
new file mode 100644
index 0000000..de00509
--- /dev/null
+++ b/Sources/LibMyGesturesBank/Posture.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Microsoft.Kinect;
+using System.Threading.Tasks;
+
+namespace LibMyGesturesBank
+{
+
+ public abstract class Posture : BaseGesture
+ {
+ protected abstract bool TestPosture(Body body);
+
+ public override void TestGesture(Body body)
+ {
+ if (TestPosture(body))
+ {
+ // Posture is recognized
+ OnGestureRecognized();
+ }
+ }
+
+ // Ajoutez ici d'autres méthodes ou propriétés nécessaires
+ }
+
+}
diff --git a/Sources/LibMyGesturesBank/PostureHandUp.cs b/Sources/LibMyGesturesBank/PostureHandUp.cs
new file mode 100644
index 0000000..970f01e
--- /dev/null
+++ b/Sources/LibMyGesturesBank/PostureHandUp.cs
@@ -0,0 +1,21 @@
+using Microsoft.Kinect;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LibMyGesturesBank
+{
+ public class PostureHandUp : Posture
+ {
+ protected override bool TestPosture(Body body)
+ {
+ // Exemple de condition : la main droite est plus haute que l'épaule droite
+ return body.Joints[JointType.HandRight].Position.Y > body.Joints[JointType.ShoulderRight].Position.Y;
+ }
+
+ public override string GestureName => "Hand Up";
+ }
+
+}
diff --git a/Sources/LibMyGesturesBank/PostureHandsOnHead .cs b/Sources/LibMyGesturesBank/PostureHandsOnHead .cs
new file mode 100644
index 0000000..34ea5b1
--- /dev/null
+++ b/Sources/LibMyGesturesBank/PostureHandsOnHead .cs
@@ -0,0 +1,37 @@
+using Microsoft.Kinect;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace LibMyGesturesBank
+{
+ public class PostureHandsOnHead : Posture
+ {
+ protected override bool TestPosture(Body body)
+ {
+ // Condition pour la main droite proche de la tête
+ bool rightHandNearHead = IsHandNearHead(body.Joints[JointType.HandRight], body.Joints[JointType.Head]);
+
+ // Condition pour la main gauche proche de la tête
+ bool leftHandNearHead = IsHandNearHead(body.Joints[JointType.HandLeft], body.Joints[JointType.Head]);
+
+ return rightHandNearHead && leftHandNearHead;
+ }
+
+ private bool IsHandNearHead(Joint hand, Joint head)
+ {
+ // Exemple de condition : la main est à moins de 30 cm de la tête
+ return 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;
+ }
+
+ public override string GestureName => "Hands On Head";
+
+ }
+
+
+}
diff --git a/Sources/LibMyGesturesBank/Properties/AssemblyInfo.cs b/Sources/LibMyGesturesBank/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..4138d3e
--- /dev/null
+++ b/Sources/LibMyGesturesBank/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Les informations générales relatives à un assembly dépendent de
+// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
+// associées à un assembly.
+[assembly: AssemblyTitle("LibMyGesturesBank")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("LibMyGesturesBank")]
+[assembly: AssemblyCopyright("Copyright © 2024")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
+// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
+// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
+[assembly: ComVisible(false)]
+
+// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
+[assembly: Guid("2496dfb1-eb55-47a1-a780-211e079b289d")]
+
+// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
+//
+// Version principale
+// Version secondaire
+// Numéro de build
+// Révision
+//
+// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
+// en utilisant '*', comme indiqué ci-dessous :
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Sources/LibMyGesturesBank/packages.config b/Sources/LibMyGesturesBank/packages.config
new file mode 100644
index 0000000..f7f19c3
--- /dev/null
+++ b/Sources/LibMyGesturesBank/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Sources/WpfApp/MainWindow.xaml b/Sources/WpfApp/MainWindow.xaml
index df5ebf5..88530fb 100644
--- a/Sources/WpfApp/MainWindow.xaml
+++ b/Sources/WpfApp/MainWindow.xaml
@@ -26,8 +26,12 @@
-
-
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Sources/WpfApp/MainWindow.xaml.cs b/Sources/WpfApp/MainWindow.xaml.cs
index 44b4e09..d5e369c 100644
--- a/Sources/WpfApp/MainWindow.xaml.cs
+++ b/Sources/WpfApp/MainWindow.xaml.cs
@@ -97,4 +97,4 @@ namespace WpfApp
CurrentKinectStream.Start();
}
}
-}
+}
\ No newline at end of file