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,05 слишком мало? –
было 0,01 раньше, и это сработало. если я использую только свою правую руку, она работает, но если я пытаюсь обеими руками, тогда она начинает быть глючной и не реагирующей, и начинает распознавать многие удары справа –