C# 即使我坐着不动,Kinect也能识别太多的右击手势

C# 即使我坐着不动,Kinect也能识别太多的右击手势,c#,kinect,swipe,gestures,C#,Kinect,Swipe,Gestures,这是我的主窗口: foreach (Joint joint in skeleton.Joints) { if (joint.TrackingState != JointTrackingState.Tracked) continue; if ((joint.JointType == JointType.HandRight) || (joint.JointType == JointType.HandLeft)) { swipeGestureR

这是我的主窗口:

foreach (Joint joint in skeleton.Joints)
{
    if (joint.TrackingState != JointTrackingState.Tracked)
        continue;

    if ((joint.JointType == JointType.HandRight) || (joint.JointType == JointType.HandLeft))
    {
        swipeGestureRecognizer.Add(joint.Position, kinectSensor, joint.JointType);
    }            
}
我的手势是这样写的:

// Swipe to right
if (ScanPositions((p1, p2) => Math.Abs(p2.Y - p1.Y) < SwipeMaximalHeight, // Height
            (p1, p2) => p2.X - p1.X > -0.05f, // Progression to right
            (p1, p2) => Math.Abs(p2.X - p1.X) > SwipeMinimalLength, // Length
            SwipeMininalDuration, SwipeMaximalDuration)) // Duration
{
    if (jointul == JointType.HandLeft)
    {
        SetClothByGesture(1, 0);
        RaiseGestureDetected("SwipeToRight");
    }
    return;
}

// Swipe to left
if (ScanPositions((p1, p2) => Math.Abs(p2.Y - p1.Y) < SwipeMaximalHeight,  // Height
            (p1, p2) => p2.X - p1.X < 0.05f, // Progression to right
            (p1, p2) => Math.Abs(p2.X - p1.X) > SwipeMinimalLength, // Length
            SwipeMininalDuration, SwipeMaximalDuration))// Duration
{
    if (jointul == JointType.HandRight)
    {
        SetClothByGesture(-1, 0);
        RaiseGestureDetected("SwipeToLeft");
    }
    return;
}
//向右滑动
如果(扫描位置((p1,p2)=>Math.Abs(p2.Y-p1.Y)p2.X-p1.X>-0.05f,//向右推进
(p1,p2)=>Math.Abs(p2.X-p1.X)>swipMinimellength,//长度
SwipMininalDuration,SwipMaximinalDuration))//持续时间
{
if(jointul==JointType.HandLeft)
{
setClothBy手势(1,0);
防雨刷(“SwipetorRight”);
}
返回;
}
//向左滑动
如果(扫描位置((p1,p2)=>Math.Abs(p2.Y-p1.Y)p2.X-p1.X<0.05f,//向右推进
(p1,p2)=>Math.Abs(p2.X-p1.X)>swipMinimellength,//长度
SwipMininalDuration,SwipMaximinalDuration))//持续时间
{
if(jointul==JointType.HandRight)
{
setClothBy手势(-1,0);
防雨刷(“SwipeToLeft”);
}
返回;
}

我的逻辑是,如果你用右手向左滑动,它会做一些事情,如果你用左手向右滑动,它会做一些其他事情。有人知道我做错了什么吗?

修改了代码,而不是刷卡,如果右手或左手比头部高出0.45华氏度,那么它就会执行命令。

也许你只是认为自己坐着不动,但实际上你有一个紧张的滴答声,并且一直在抽搐。

)试着提高你的运动门槛;可能是0.05太小了?之前是0.01,它起作用了。如果我只使用右手,它会工作,但如果我尝试双手,它就会开始出现故障和无响应,并开始识别许多次刷卡。正确的刷卡历史记录存储在哪里?是什么代码决定了您是点击了
SwipeMininalDuration
还是超过了
SwipeMaximinalDuration