2013-02-08 2 views
0

Это из моего главного окна:Kinect распознает слишком много мазковые правильные жесты, даже если я сидеть

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; 
} 

Моя логика такова, что если вы проведите пальцем правой рукой по левому краю, тогда он что-то сделает, если вы проведете рукой левой рукой, он сделает что-то еще. Кто-нибудь знает, что я делаю неправильно?

+0

Возможно, вы только думаете, что сидите спокойно, но на самом деле у вас нервный тик и держитесь подергивания. :) –

+0

Попробуйте увеличить порог движения; Может быть, 0,05 слишком мало? –

+0

было 0,01 раньше, и это сработало. если я использую только свою правую руку, она работает, но если я пытаюсь обеими руками, тогда она начинает быть глючной и не реагирующей, и начинает распознавать многие удары справа –

ответ

0

Изменен код, вместо того, чтобы делать щелчки, если правая или левая рука больше, чем голова с 0,45f, то она выполняет команду.