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 26c77a6..9911da0 100644 --- a/Sources/KinectSolution.sln +++ b/Sources/KinectSolution.sln @@ -9,6 +9,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Lib", "Lib\Lib.csproj", "{0 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 @@ -27,6 +29,10 @@ Global {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 bf9ce2b..9977b36 100644 --- a/Sources/Lib/KinectManager.cs +++ b/Sources/Lib/KinectManager.cs @@ -7,6 +7,10 @@ namespace Lib public class KinectManager : INotifyPropertyChanged { private KinectSensor sensor; + + private BodyFrameReader bodyFrameReader; + private Body[] bodies = null; + public KinectSensor Sensor { get { return sensor; @@ -27,18 +31,65 @@ namespace Lib public KinectManager() { sensor = KinectSensor.GetDefault(); + if (sensor != null) + { + bodyFrameReader = sensor.BodyFrameSource.OpenReader(); + bodyFrameReader.FrameArrived += BodyFrameReader_FrameArrived; + } + } + + private void BodyFrameReader_FrameArrived(object sender, BodyFrameArrivedEventArgs e) + { + using (var frame = e.FrameReference.AcquireFrame()) + { + if (frame != null) + { + if (bodies == null) + { + bodies = new Body[frame.BodyCount]; + } + + frame.GetAndRefreshBodyData(bodies); + } + } } - public void StartSensor() + + public Body GetNextBody() + { + if (bodies == null) return null; + + foreach (var body in bodies) + { + if (body.IsTracked) + { + return body; + } + } + + return null; + } + + public bool StartSensor() { if (sensor != null) { sensor.Open(); + return true; + } + else + { + return false; } } - public void StopSensor() + public bool StopSensor() { if (sensor != null) { sensor.Close(); + return true; + } + else + { + return false; } } public bool Status