From bbc0291fedcf01d0e421eb45a59e30f43240a7f6 Mon Sep 17 00:00:00 2001 From: tanglong <842690096@qq.com> Date: Thu, 25 Sep 2025 16:30:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E5=8A=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Wpf_AiSportsMicrospace/Common/SportOperate.cs | 34 ++++++------ Wpf_AiSportsMicrospace/Home.xaml.cs | 54 +++++++++---------- 2 files changed, 45 insertions(+), 43 deletions(-) diff --git a/Wpf_AiSportsMicrospace/Common/SportOperate.cs b/Wpf_AiSportsMicrospace/Common/SportOperate.cs index 1095f51..e00d02b 100644 --- a/Wpf_AiSportsMicrospace/Common/SportOperate.cs +++ b/Wpf_AiSportsMicrospace/Common/SportOperate.cs @@ -22,6 +22,24 @@ namespace Wpf_AiSportsMicrospace.Common public class SportOperate { private DateTime _lastSlideTime = DateTime.MinValue; + + IPointTracker _leftTracker; + IPointTracker _rightTracker; + IPointTracker _leftElbow; + IPointTracker _rightElbow; + + public SportOperate() + { + _leftTracker = PostureCalculate.CreatePointTracker("left_wrist", 0); + _rightTracker = PostureCalculate.CreatePointTracker("right_wrist", 0); + _leftElbow = PostureCalculate.CreatePointTracker("left_elbow", 0); + _rightElbow = PostureCalculate.CreatePointTracker("right_elbow", 0); + + _leftTracker.Amplitude = 0.05f; + _rightTracker.Amplitude = 0.05f; + _leftElbow.Amplitude = 0.05f; + _rightElbow.Amplitude = 0.05f; + } public WebcamClient CreateRTSP() { WebcamClient webcamClient = WebcamClient.CreateRTSP("192.168.3.64", "admin", "yd708090", 554u); @@ -34,16 +52,6 @@ namespace Wpf_AiSportsMicrospace.Common /// public int VerifyWavingAction(Human human) { - IPointTracker _leftTracker = PostureCalculate.CreatePointTracker("left_wrist", 0); - IPointTracker _rightTracker = PostureCalculate.CreatePointTracker("right_wrist", 0); - IPointTracker _leftElbow = PostureCalculate.CreatePointTracker("left_elbow", 0); - IPointTracker _rightElbow = PostureCalculate.CreatePointTracker("right_elbow", 0); - - _leftTracker.Amplitude = 0.05f; - _rightTracker.Amplitude = 0.05f; - _leftElbow.Amplitude = 0.05f; - _rightElbow.Amplitude = 0.05f; - var leftResult = _leftTracker.Tracking(human); var rightResult = _rightTracker.Tracking(human); var leftElbowResult = _leftElbow.Tracking(human); @@ -63,12 +71,6 @@ namespace Wpf_AiSportsMicrospace.Common public int VerifyLiftHandAction(Human human) { - IPointTracker _rightTracker = PostureCalculate.CreatePointTracker("right_wrist", 0); - IPointTracker _rightElbow = PostureCalculate.CreatePointTracker("right_elbow", 0); - - _rightTracker.Amplitude = 0.05f; - _rightElbow.Amplitude = 0.05f; - var rightResult = _rightTracker.Tracking(human); var rightElbowResult = _rightElbow.Tracking(human); diff --git a/Wpf_AiSportsMicrospace/Home.xaml.cs b/Wpf_AiSportsMicrospace/Home.xaml.cs index 7bbe22d..7c398d8 100644 --- a/Wpf_AiSportsMicrospace/Home.xaml.cs +++ b/Wpf_AiSportsMicrospace/Home.xaml.cs @@ -36,7 +36,6 @@ namespace Wpf_AiSportsMicrospace private SportBase _sport; private readonly SportDetectionQueue _detectQueue; private WebcamClient _webcamClient; - private DateTime _lastSlideTime = DateTime.MinValue; private SportOperate _sportOperate; @@ -98,37 +97,44 @@ namespace Wpf_AiSportsMicrospace if (humans == null || humans.Count == 0) return; - var human = humans - .Where(h => - h.Keypoints.Any(kp => kp.Name == "left_ankle" && kp.X < 1020 && kp.Y > 900 && kp.Y < 1020) && - h.Keypoints.Any(kp => kp.Name == "right_ankle" && kp.X > 750 && kp.Y > 900 && kp.Y < 1020) - ) - .FirstOrDefault(); + //var human = humans + // .Where(h => + // h.Keypoints.Any(kp => kp.Name == "left_ankle" && kp.X < 1020 && kp.Y > 900 && kp.Y < 1020) && + // h.Keypoints.Any(kp => kp.Name == "right_ankle" && kp.X > 750 && kp.Y > 900 && kp.Y < 1020) + // ) + // .FirstOrDefault(); - //human = humans.FirstOrDefault(); + var human = humans.FirstOrDefault(); if (human == null) return; - //检测挥手动作 - var wavingAction = _sportOperate.VerifyWavingAction(human); - // 根据手势结果选择滑动方向 - if (wavingAction == 1) - { - SlideCoverFlow(coverFlow.SlideRight); - } - if (wavingAction == 2) - { - SlideCoverFlow(coverFlow.SlideLeft); - } + + // 启动进度条动画; + //SlideCoverFlow(coverFlow.StartSelectedProgress); + + ////检测挥手动作 + //var wavingAction = _sportOperate.VerifyWavingAction(human); + //// 根据手势结果选择滑动方向 + //if (wavingAction == 1) + //{ + // SlideCoverFlow(coverFlow.SlideRight); + // return; + //} + //if (wavingAction == 2) + //{ + // SlideCoverFlow(coverFlow.SlideLeft); + // return; + //} //检测举手动作 var liftHandAction = _sportOperate.VerifyLiftHandAction(human); - // 根据手势结果选择滑动方向 - if (wavingAction == 1) + // 根据手势结果 + if (liftHandAction == 1) { // 启动进度条动画; SlideCoverFlow(coverFlow.StartSelectedProgress); + return; } } catch (Exception ex) @@ -153,11 +159,5 @@ namespace Wpf_AiSportsMicrospace } }), System.Windows.Threading.DispatcherPriority.Background); } - - private void Button_Click(object sender, RoutedEventArgs e) - { - // 启动进度条动画; - SlideCoverFlow(coverFlow.StartSelectedProgress); - } } }