//骨骼数据处理事件 private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { bool received = false; using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame()) { if (skeletonFrame != null) { skeletonFrame.CopySkeletonDataTo(this.skeletonData); received = true; } } if (received) { foreach (Skeleton skeleton in this.skeletonData) { if (skeleton.TrackingState == SkeletonTrackingState.Tracked) { _gestureController.Update(skeleton); } } //重绘整个画面,冲掉原有骨骼图像 skeletonImage.Draw(new Rectangle(0, 0, skeletonImage.Width, skeletonImage.Height), new Bgr(0.0, 0.0, 0.0), -1); DrawSkeletons(skeletonImage, 0); imageBoxSkeleton.Image = skeletonImage; } }
void Reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e) { var reference = e.FrameReference.AcquireFrame(); // Color using (var frame = reference.ColorFrameReference.AcquireFrame()) { if (frame != null) { if (viewer.Visualization == Visualization.Color) { viewer.Image = frame.ToBitmap(); } } } // Body using (var frame = reference.BodyFrameReference.AcquireFrame()) { if (frame != null) { Body body = frame.Bodies().Closest(); if (body != null) { _gestureController.Update(body); } } } }
void Sensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { using (var frame = e.OpenSkeletonFrame()) { if (frame != null) { canvas.ClearSkeletons(); tblHeights.Text = string.Empty; var skeletons = frame.Skeletons().Where(s => s.TrackingState == SkeletonTrackingState.Tracked); foreach (var skeleton in skeletons) { if (skeleton != null) { // Update skeleton gestures. _gestureController.Update(skeleton); // Draw skeleton. canvas.DrawSkeleton(skeleton); // Display user height. tblHeights.Text += string.Format("\nUser {0}: {1}cm", skeleton.TrackingId, skeleton.Height()); } } } } }
/// <summary> /// Handles body frame events /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BodyFrameReader_FrameArrived(object sender, BodyFrameArrivedEventArgs e) { // Body frame using (BodyFrame frame = e.FrameReference.AcquireFrame()) { if (frame != null) { Body body = frame.Bodies().Closest(); if (body != null && gesturesEnabled) { if (body.IsTracked && imageManager.IsImageDisplayed()) { LHSValue.Text = body.HandLeftState.ToString(); RHSValue.Text = body.HandRightState.ToString(); if (lastGesture == GestureType.SwipeLeft && body.HandRightState == HandState.Lasso) { imageManager.ShowPreviousImage(); } if (lastGesture == GestureType.SwipeRight && body.HandLeftState == HandState.Lasso) { imageManager.ShowNextImage(); } } gestureController.Update(body); } } } }
/// <summary> /// Handles the depth/color/body index frame data arriving from the sensor /// </summary> /// <param name="sender">object sending the event</param> /// <param name="e">event arguments</param> void Reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e) { var reference = e.FrameReference.AcquireFrame(); using (var colorFrame = reference.ColorFrameReference.AcquireFrame()) using (var depthFrame = reference.DepthFrameReference.AcquireFrame()) using (var bodyIndexFrame = reference.BodyIndexFrameReference.AcquireFrame()) using (var bodyFrame = reference.BodyFrameReference.AcquireFrame()) { if (colorFrame != null && depthFrame != null && bodyIndexFrame != null) { // 3) Update the image source. Camera.Source = _backgroundRemovalTool.GreenScreen(colorFrame, depthFrame, bodyIndexFrame); CaptureOriginalColorFrame(colorFrame); } if (bodyFrame != null) { Body body = bodyFrame.Bodies().Closest(); if (body != null) { _gestureController.Update(body); } } } }
private void Sensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { using (var frame = e.OpenSkeletonFrame()) if (frame != null) { if (_kinectViewer != null) { _kinectViewer.Clear(); } var skeletons = frame.Skeletons().Where(s => s.TrackingState == SkeletonTrackingState.Tracked); foreach (var skeleton in skeletons) { if (skeleton != null) { // Update skeleton gestures _gestureController.Update(skeleton); // Draw skeleton if (_kinectViewer != null) { _kinectViewer.DrawBody(skeleton); } position = skeleton.Position; } } } }
private void OnSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { using (SkeletonFrame frame = e.OpenSkeletonFrame()) { //skeletonCanvas.ClearSkeletons(); if (frame == null) { return; } // resize the skeletons array if needed if (skeletons.Length != frame.SkeletonArrayLength) { skeletons = new Skeleton[frame.SkeletonArrayLength]; } // get the skeleton data frame.CopySkeletonDataTo(skeletons); foreach (var skeleton in skeletons) { // skip the skeleton if it is not being tracked if (skeleton.TrackingState != SkeletonTrackingState.Tracked) { continue; } //skeletonCanvas.DrawSkeleton(skeleton); GetJointLocations(skeleton); DrawSkeleton(); _gestureController.Update(skeleton); //if (IsPose(skeleton, this.startPose)) //{ // MessageBox.Show("you select start Pose"); // // 这里可以改变仿生手势 //} //// 是否双手放下 //if (IsPose(skeleton, this.poseLibrary[1])) //{ // MessageBox.Show("your Arms both down!!!"); // _wait = true; //} } } }
void Reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e) { //get the frame from the kinect var reference = e.FrameReference.AcquireFrame(); // Body using (var frame = reference.BodyFrameReference.AcquireFrame()) { if (frame != null) { //detect the nearest body to the kinect Body body = frame.Bodies().Closest(); if (body != null) { //update the skeleton of the body _gestureController.Update(body); } } } }
void Reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e) { var reference = e.FrameReference.AcquireFrame(); // Color using (var frame = reference.ColorFrameReference.AcquireFrame()) { if (frame != null) { if (viewer.Visualization == Visualization.Color) { viewer.Image = frame.ToBitmap(); } } } // Depth using (var frame = reference.DepthFrameReference.AcquireFrame()) { if (frame != null) { if (viewer.Visualization == Visualization.Depth) { viewer.Image = frame.ToBitmap(); } } } // Infrared using (var frame = reference.InfraredFrameReference.AcquireFrame()) { if (frame != null) { if (viewer.Visualization == Visualization.Infrared) { viewer.Image = frame.ToBitmap(); } } } // Body using (var frame = reference.BodyFrameReference.AcquireFrame()) { if (frame != null) { // Wait 100 frames until we can detect new gesture if (sinceLastGesture > 0) { sinceLastGesture--; } bodies = new Body[frame.BodyFrameSource.BodyCount]; frame.GetAndRefreshBodyData(bodies); playersController.Update(bodies); foreach (Body body in bodies) { viewer.DrawBody(body); } int trackedBodies = bodies.Count(x => x.IsTracked == true); if (trackedBodies > 0) { // text1.Text = (bodies.Where(x => x.IsTracked == true).ToList()[0].Joints[JointType.HandRight].Position.X - bodies.Where(x => x.IsTracked == true).ToList()[0].Joints[JointType.HandLeft].Position.X).ToString(); isRefreshed = false; crowdController.Update(bodies); gestureController.Update(crowdController.DetermineMainPerson()); if (!swipe_mode) { setCursor(); } } else { if (!isRefreshed) { restart_view(); } } } } }
void Reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e) { var reference = e.FrameReference.AcquireFrame(); // Color using (var frame = reference.ColorFrameReference.AcquireFrame()) { if (frame != null) { if (_mode == Visualization.Color) { camera.Source = frame.ToBitmap(); } } } // Depth using (var frame = reference.DepthFrameReference.AcquireFrame()) { if (frame != null) { if (_mode == Visualization.Depth) { camera.Source = frame.ToBitmap(); } } } // Infrared using (var frame = reference.InfraredFrameReference.AcquireFrame()) { if (frame != null) { if (_mode == Visualization.Infrared) { camera.Source = frame.ToBitmap(); } } } // Body using (var frame = reference.BodyFrameReference.AcquireFrame()) { if (frame != null) { tblHeights.Text = string.Empty; _bodies = frame.Bodies().Where(body => body.IsTracked); foreach (var body in _bodies) { if (body.IsTracked) { // Update body gestures. _gestureController.Update(body); // Draw body. //canvas.Source = body.ToBitmap(_mode); // Display user height. tblHeights.Text += string.Format("\nUser {0}: {1}cm", body.TrackingId, Math.Round(body.Height(), 2)); } } } } }
/// <summary> /// Check if one or two children are on the scene (adding/clearing children's skeleton to the list, ) /// then shows skeletons and check the statues /// </summary> private void Sensor_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { using (var frame = e.OpenSkeletonFrame()) if (frame != null) { kinectViewer.Clear(); var skeletons = frame.Skeletons().Where(s => s.TrackingState == SkeletonTrackingState.Tracked); if (skeletons.Count() == 0) { if (listSkeletons.Count != 0) { listSkeletons.Clear(); _mainGesture.setGreenFlag(false); _mainGesture2.setGreenFlag(false); } } else { if (skeletons.Count() == 2) { if (listSkeletons.Count == 2 && !recherche_skeleton(skeletons.Last().TrackingId)) { if (listSkeletons.IndexOf(skeletons.First().TrackingId) == 1) { listSkeletons[0] = 0; _listGestures1.Clear(); listeGestes.Items.Clear(); } if (listSkeletons.IndexOf(skeletons.First().TrackingId) == 0) { listSkeletons.RemoveAt(1); _listGestures2.Clear(); listeGestes2.Items.Clear(); } } else if (listSkeletons.Count == 2) { _mainGesture2.Update(skeletons.Last()); } kinectViewer.DrawBody(skeletons.Last()); } if (listSkeletons.Count == 0) { listeGestes.Items.Clear(); _listGestures1.Clear(); _mainGesture.setGreenFlag(false); listSkeletons.Add(skeletons.First().TrackingId); _listGestures1.Add(skeletons.First().TrackingId.ToString()); } else if (listSkeletons.Count == 1) { if ((!recherche_skeleton(skeletons.Last().TrackingId))) { if (listSkeletons[0] == 0) { _mainGesture.setGreenFlag(false); listSkeletons[0] = skeletons.Last().TrackingId; _listGestures1.Add(skeletons.Last().TrackingId.ToString()); } else { _mainGesture2.setGreenFlag(false); listSkeletons.Add(skeletons.Last().TrackingId); _listGestures2.Add(skeletons.Last().TrackingId.ToString()); } } } if (skeletons.Count() == 1) { if (listSkeletons.IndexOf(skeletons.First().TrackingId) == 1) { _mainGesture2.Update(skeletons.First()); } else { _mainGesture.Update(skeletons.First()); } } kinectViewer.DrawBody(skeletons.First()); } } }
private void OnSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { using (SkeletonFrame frame = e.OpenSkeletonFrame()) { //skeletonCanvas.ClearSkeletons(); if (frame == null) { return; } // resize the skeletons array if needed if (skeletons.Length != frame.SkeletonArrayLength) { skeletons = new Skeleton[frame.SkeletonArrayLength]; } // get the skeleton data frame.CopySkeletonDataTo(skeletons); // 这里是防止人物过于混乱引起的错误 //var primary_skeleton = skeletons.GetPrimarySkeleton(); //if (primary_skeleton == null || primary_skeleton.TrackingState != SkeletonTrackingState.Tracked) // return; //_gestureController.Update(primary_skeleton); foreach (var skeleton in skeletons) { // skip the skeleton if it is not being tracked if (skeleton.TrackingState != SkeletonTrackingState.Tracked) { continue; } //skeletonCanvas.DrawSkeleton(skeleton); GetJointLocations(skeleton); DrawSkeleton(); _gestureController.Update(skeleton); // 是否右手举了起来 if (IsPose(skeleton, this.poseLibrary[3]) && !_clearTimer.Enabled) { if (isRealHand) { isRealHand = false; _debug = ""; statusBarText.Text = "模仿模式已关闭"; } else { isRealHand = true; _debug = "模仿模式"; statusBarText.Text = "模仿模式已启用"; } _clearTimer.Enabled = true; } // 是否开启了暂停模式 if (IsPose(skeleton, this.startPose) && !_clearTimer.Enabled) { // MessageBox.Show("your Arms both down!!!"); // 等待串口发送的时间 if (!_wait) { _waitTime = 5; _wait = true; } else { _wait = false; } _clearTimer.Enabled = true; } } } }
void Reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e) { var reference = e.FrameReference.AcquireFrame(); // Color using (var frame = reference.ColorFrameReference.AcquireFrame()) { if (frame != null) { if (viewer.Visualization == Visualization.Color) { viewer.Image = frame.ToBitmap(); } } } // Body using (var frame = reference.BodyFrameReference.AcquireFrame()) { if (frame != null) { var bodies = frame.Bodies(); _playersController.Update(bodies); Body bodyg = frame.Bodies().Closest(); viewer.DrawBody(bodyg); if (bodyg != null) { _gestureController.Update(bodyg); if (heightFlag == 0) { height = 100 * (bodyg.Height()); textBox.Text = height.ToString(); heightcm = (Convert.ToInt32(height)) + Adder; SendString = "X" + heightcm.ToString() + '\n'; noHeightFlag = 0; SendData(); } } else if (bodyg == null) { heightFlag = 0; } if (GestureString == "ZoomIn") { heightFlag = 0; GestureString = null; textBox2.Text = null; SendString = "X" + heightcm.ToString() + '\n'; } /*if (GestureString == "SwipeLeft") * { * heightFlag = 0; * GestureString = null; * * SendString = "A"+ '\n'; * * SendData(); * } * else if (GestureString == "SwipeRight") * { * heightFlag = 0; * GestureString = null; * * SendString = "E" + '\n'; * * SendData(); * }*/ } } }