2012-02-25 3 views
1

샘플 코드를 구현하고 'Joint.Type'대신 'Joint.ID'를 사용했습니다. 루프 내에서 지속적으로 점검 할 수 있습니다. 모든 조언을 많이 주시면 감사하겠습니다. 감사. 조언Kinect를 사용하여 간단한 정적 제스처에 대한 제스처 정의 만들기 - 2 부

참고 : -

  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!"); 
    } 
} 

답변

0

당신이 AllFramesReady 이벤트에 대한 이벤트 핸들러로 newSensor_AllFramesReady를 지정해야합니다. 아무 것도 루프에 넣을 필요가 없습니다. newSensor_AllFramesReady는 초당 30 회 호출됩니다 (또는 kinect의 새로 고침 속도).

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