Создание определения жеста для простого статического жеста с использованием Kinect - часть 2 - PullRequest
0 голосов
/ 25 февраля 2012

Я реализовал пример кода и использовал «Joint.ID» вместо «Joint.Type», мне просто нужно выяснить, можно ли / как непрерывно проверять этот код в цикле.Любые советы будут высоко ценится.Спасибо.

Примечания: -

  1. void newSensor_AllFramesReady срабатывает при синхронизации цвета / глубины / скелета. Я не слишком уверен, где разместить этот метод.

  2. checkHand метод необходимо проверять каждый раунд потока.

Код на данный момент: -

void newSensor_AllFramesReady(object sender, SkeletonFrameReadyEventArgs e)
{
    //Get a skeleton

    SkeletonFrame skeletonSet = e.SkeletonFrame;

    SkeletonData skeleton = (from s in skeletonSet.Skeletons
                             where s.TrackingState == SkeletonTrackingState.Tracked
                             select s).FirstOrDefault();

    if (skeleton == null)
    {
        return;
    }
    else if (skeleton != null)
    {
        checkHand(skeleton.Joints[JointID.Head], skeleton.Joints[JointID.HandRight], skeleton.Joints[JointID.HandLeft]);
    }
}

public void checkHand(Joint head, Joint rhand, Joint lhand)
{
    if (rhand.Position.X > head.Position.Y)
    {
        MessageBox.Show("Right hand up!");
    }
    else if (lhand.Position.Y > head.Position.Y)
    {
        MessageBox.Show("Left hand up!");
    }
}

1 Ответ

0 голосов
/ 03 марта 2012

Убедитесь, что вы присвоили newSensor_AllFramesReady в качестве обработчика события для события AllFramesReady.Там нет необходимости ставить все это в цикле.newSensor_AllFramesReady будет вызываться 30 раз в секунду (или независимо от частоты обновления kinect).

Kinect.AllFramesReady += new EventHandler<AllFramesReadyEventArgs>(newSensor_AllFramesReady);
...