private void Skele_OnFrame(KinCapFrame OneFrame) { if (frameTotCnt < MaxFrames) { if (OneFrame.BodyNdx == 0) // we're only grabbing body 0 // copy frame data including joints, positions, tracking, etc { capFrames[frameTotCnt].BodyNdx = OneFrame.BodyNdx; capFrames[frameTotCnt].FloorClip = OneFrame.FloorClip; capFrames[frameTotCnt].TmSpan = OneFrame.TmSpan; capFrames[frameTotCnt].FrameNum = OneFrame.FrameNum; for (int z = 0; z <= OneFrame.CamPos.GetUpperBound(0); z++) { capFrames[frameTotCnt].CamPos[z] = OneFrame.CamPos[z]; capFrames[frameTotCnt].SmoothedCSP[z] = OneFrame.SmoothedCSP[z]; capFrames[frameTotCnt].TrackState[z] = OneFrame.TrackState[z]; } if (frameTotCnt % 10 == 0) { Frame_Lbl.Text = string.Format("Frames: {0}", frameTotCnt); } frameTotCnt++; } } else { Frame_Lbl.Text = "Max Frames hit!"; Frame_Lbl.Refresh(); } }
private void StartBtnOnClick(object sender, EventArgs e) { frameTotCnt = 0; // wait 10 seconds with countdown for (int cnt = 10; cnt >= 1; cnt--) { Frame_Lbl.Text = "Countdown: " + cnt.ToString(); Frame_Lbl.Refresh(); Thread.Sleep(1000); } Frame_Lbl.Text = "Starting capture"; skele = new KinSkeleTrack(); if (skele == null) { ErrMsg("Cannot get skeleton for capture"); return; } skele.OnAvail += Skele_OnAvail; skele.OnFrame += Skele_OnFrame; skele.StartTracking(); }