Создание определения простого статического жеста с помощью Kinect — часть 2

Я реализовал пример кода и использовал «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!");
    }
}

person Joshua    schedule 25.02.2012    source источник


Ответы (1)


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

Kinect.AllFramesReady += new EventHandler<AllFramesReadyEventArgs>(newSensor_AllFramesReady);
person Aswath Krishnan    schedule 02.03.2012