private void saveGestureBtn_Click(object sender, RoutedEventArgs e)
        {
            // save to file
            string time = System.DateTime.Now.ToString("hh'-'mm'-'ss", CultureInfo.CurrentUICulture.DateTimeFormat);

            string gesture_name = (gestureComboBox.SelectedItem as ComboBoxItem).Content.ToString();
            string myPhotos     = "D:"; //Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
            string skeletonpath = myPhotos + "\\gdata\\" + gesture_name + "\\Kinect_skeleton_" + time + ".xml";

            // save data from start label to end label
            int start_id = int.Parse(replay_startLabel.Content.ToString());
            int end_id   = int.Parse(replay_endLabel.Content.ToString());

            // remove end part first so front id will not change
            gesture_capture_data.RemoveRange(end_id + 1, gesture_capture_data.Count - end_id - 1);
            gesture_capture_data.RemoveRange(0, start_id);
            KinectRecorder.WriteToSkeletonFile(skeletonpath, gesture_capture_data);

            gesture_capture_data.Clear();
            frame_id = 0;

            statusbarLabel.Content = "Save skeletons to file: " + skeletonpath;

            DeactivateReplay();
            saveGestureBtn.IsEnabled = false;
        }
Пример #2
0
        /// <summary>
        /// Save current kinect data
        /// </summary>
        private void saveBtn_Click(object sender, RoutedEventArgs e)
        {
            if (kinect_sensor == null || !kinect_sensor.IsRunning)
            {
                return;
            }


            string time = System.DateTime.Now.ToString("hh'-'mm'-'ss", CultureInfo.CurrentUICulture.DateTimeFormat);

            string myPhotos = "D:"; //Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);

            string colorpath    = myPhotos + "\\Kinect_color_" + time + ".png";
            string depthpath    = myPhotos + "\\Kinect_depth_" + time + ".txt";
            string skeletonpath = myPhotos + "\\Kinect_skeleton_" + time + ".xml";

            if (kinect_sensor.ColorStream.IsEnabled)
            {
                kinect_data_manager.SaveKinectData(kinect_data_manager.ColorStreamBitmap, colorpath, "COLOR");
            }
            if (kinect_sensor.DepthStream.IsEnabled)
            {
                kinect_data_manager.SaveKinectData(kinect_data_manager.depthPixels, depthpath, "DEPTH");
            }
            if (kinect_sensor.SkeletonStream.IsEnabled)
            {
                List <Skeleton> skeletonCollection = new List <Skeleton>();
                //skeletonCollection.Add(1, kinect_data_manager.skeletons);
                KinectRecorder.WriteToSkeletonFile(skeletonpath, skeletonCollection);
                statusbarLabel.Content = "Save skeletons to file: " + skeletonpath;
            }
            //kinect_data_manager.SaveKinectData(kinect_data_manager.skeletons, skeletonpath, "SKELETON");
        }
Пример #3
0
        private void stopSkeletonRecordBtn_Click(object sender, RoutedEventArgs e)
        {
            // save record data to file
            string time = System.DateTime.Now.ToString("hh'-'mm'-'ss", CultureInfo.CurrentUICulture.DateTimeFormat);

            string myPhotos     = "D:"; //Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
            string skeletonpath = myPhotos + "\\Kinect_skeleton_" + time + ".xml";

            KinectRecorder.WriteToSkeletonFile(skeletonpath, kinect_data_manager.gesture);

            statusbarLabel.Content = "Save skeletons to file: " + skeletonpath;


            //clear data
            kinect_data_manager.gesture.Clear();
            // set state
            stopSkeletonRecordBtn.IsEnabled  = false;
            startSkeletonRecordBtn.IsEnabled = true;
        }
Пример #4
0
        private void previewBtn_Click(object sender, RoutedEventArgs e)
        {
            if (previewBtn.Content.ToString() == "Preview Stream")
            {
                if (kinect_sensor != null)
                {
                    // disable all other buttons
                    DeactivateReplay();
                    gestureCaptureBtn.IsEnabled = false;
                    gestureReplayBtn.IsEnabled  = false;
                    previewBtn.Content          = "Stop Stream";
                    isStreaming = true;
                    kinect_data_manager.ifShowJointStatus = true;

                    overlap_frame_rec_buffer.Clear();

                    kinect_sensor.Start();
                }
            }
            else
            {
                if (kinect_sensor != null)
                {
                    kinect_sensor.Stop();

                    gestureCaptureBtn.IsEnabled = true;
                    gestureReplayBtn.IsEnabled  = true;

                    isStreaming = false;
                    kinect_data_manager.ifShowJointStatus = false;

                    // save recorded frame to disk and save skeleton data
                    if (overlap_frame_rec_buffer != null && gesture_capture_data != null && saveVideoCheckBox.IsChecked.Value)
                    {
                        statusbarLabel.Content = "Saving video...";

                        // create video writer
                        int fwidth  = (int)groupBox3.Width + 20;
                        int fheight = (int)groupBox3.Height + 20;

                        SaveFileDialog saveDialog = new SaveFileDialog();
                        saveDialog.Filter           = "avi files (*.avi)|*.avi";
                        saveDialog.FilterIndex      = 2;
                        saveDialog.RestoreDirectory = true;

                        if (saveDialog.ShowDialog().Value)
                        {
                            string      videofile   = saveDialog.FileName.ToString();
                            VideoWriter videoWriter = new VideoWriter(videofile, CvInvoke.CV_FOURCC('M', 'J', 'P', 'G'), 15,
                                                                      fwidth, fheight, true);

                            // save video
                            if (videoWriter == null)
                            {
                                MessageBox.Show("Fail to save video. Check if codec has been installed.");
                            }
                            else
                            {
                                for (int i = 0; i < overlap_frame_rec_buffer.Count; i++)
                                {
                                    // write to video file
                                    Emgu.CV.Image <Bgr, byte> cvImg =
                                        new Emgu.CV.Image <Bgr, byte>(overlap_frame_rec_buffer[i] as Bitmap);

                                    videoWriter.WriteFrame <Bgr, byte>(cvImg);
                                }

                                videoWriter.Dispose();

                                statusbarLabel.Content = "Video saved to " + videofile;
                            }

                            // save skeleton
                            string skeletonpath = videofile + ".xml";
                            KinectRecorder.WriteToSkeletonFile(skeletonpath, gesture_capture_data);
                        }
                    }

                    gesture_capture_data.Clear();
                    overlap_frame_rec_buffer.Clear();

                    previewBtn.Content = "Preview Stream";

                    // save tracked elbow speed
                    //FileStream file = File.Open("d:\\temp\\test.txt", FileMode.Create);
                    //StreamWriter writer = new StreamWriter(file);
                    //for (int i = 0; i < motion_assessor.jointStatusSeq.Count; i++)
                    //    writer.WriteLine(motion_assessor.jointStatusSeq[i][JointType.HandRight].abs_speed);
                    //writer.Close();
                }
            }
        }