Exemplo n.º 1
0
        /// <summary>
        /// runs when new color frame is received
        /// </summary>
        /// <param name="sender">object sending the event</param>
        /// <param name="e">event arguments</param>
        private void SensorColorFrameReady(object sender, ColorImageFrameReadyEventArgs e)
        {
            if (is_observing_live)
            {
                using (ColorImageFrame colorFrame = e.OpenColorImageFrame())
                {
                    if (colorFrame != null)
                    {
                        if (is_recording)
                        {
                            long         now          = colorFrame.Timestamp;
                            MyColorFrame myColorFrame = new MyColorFrame(now, colorFrame.ToBitmap());
                            recorded_color_frames.Add(myColorFrame);
                            clabel2.Content = recorded_color_frames.Count;
                        }
                        // Copy the pixel data from the image to a temporary array
                        colorFrame.CopyPixelDataTo(this.colorPixels);

                        // Write the pixel data into our bitmap
                        this.colorBitmap.WritePixels(
                            new Int32Rect(0, 0, this.colorBitmap.PixelWidth, this.colorBitmap.PixelHeight),
                            this.colorPixels,
                            this.colorBitmap.PixelWidth * sizeof(int),
                            0);
                    }
                }
            }
        }
Exemplo n.º 2
0
        public MyOverlayFrame(MySkeletonFrame skeletonframe, MyColorFrame colorframe)
        {
            this.timetag = colorframe.getTime();
            System.Drawing.Bitmap colorimg = (System.Drawing.Bitmap)System.Drawing.Image.FromStream(colorframe.getImageMemoryStream());
            System.Drawing.Image  painted  = SkeletonPainter.paintSkeletonAndHideHead(colorimg, skeletonframe.getSkeletons());
            overlayMemoryStream = new MemoryStream();
            painted.Save(overlayMemoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);

            System.Drawing.Bitmap colorimg2 = (System.Drawing.Bitmap)System.Drawing.Image.FromStream(colorframe.getImageMemoryStream());
            System.Drawing.Image  painted2  = SkeletonPainter.hideHead(colorimg2, skeletonframe.getSkeletons());
            headhidedMemoryStream = new MemoryStream();
            painted2.Save(headhidedMemoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
        }
Exemplo n.º 3
0
        private void load_rgb(MyColorFrame frame)
        {
            timeTagLabel.Content = frame.getTime().ToString();
            System.IO.MemoryStream ms = frame.getImageMemoryStream();
            ms.Position = 0;
            ImageSourceConverter c  = new ImageSourceConverter();
            BitmapImage          bi = new BitmapImage();

            bi.BeginInit();
            bi.StreamSource = ms;
            bi.EndInit();
            currentFrame.Source = bi;
        }
Exemplo n.º 4
0
        private void completeSkeletons()
        {
            if (recorded_skeleton_frames.Count == 0)
            {
                for (int i = 0; i < recorded_color_frames.Count; i++)
                {
                    MySkeletonFrame injection = new MySkeletonFrame(recorded_color_frames[i].getTime());
                    recorded_skeleton_frames.Add(injection);
                }
                return;
            }

            // inject empty skeleton frames at the begining
            for (long firstGap = recorded_skeleton_frames[0].getTime() - recorded_color_frames[0].getTime(); firstGap > 40; firstGap = recorded_skeleton_frames[0].getTime() - recorded_color_frames[0].getTime())
            {
                MySkeletonFrame injection = new MySkeletonFrame(recorded_skeleton_frames[0].getTime() - 33);
                recorded_skeleton_frames.Insert(0, injection);
            }

            // inject empty skeleton frames at the end
            for (long lastGap = recorded_color_frames.Last().getTime() - recorded_skeleton_frames.Last().getTime(); lastGap > 40; lastGap = recorded_color_frames.Last().getTime() - recorded_skeleton_frames.Last().getTime())
            {
                MySkeletonFrame injection = new MySkeletonFrame(recorded_skeleton_frames.Last().getTime() + 33);
                recorded_skeleton_frames.Insert(recorded_skeleton_frames.Count, injection);
            }

            // making overlay and interpolating skeleton when neccessary
            for (int i = 0; i < recorded_color_frames.Count; i++)
            {
                MyColorFrame thisColorFrame = recorded_color_frames.ElementAt(i);
                if (i + 1 < recorded_skeleton_frames.Count)
                {
                    MySkeletonFrame thisSkeletonFrame = recorded_skeleton_frames[i];
                    MySkeletonFrame nextSkeletonFrame = recorded_skeleton_frames[i + 1];
                    recorded_skeleton_frames.InsertRange(i + 1, thisSkeletonFrame.interpolate(nextSkeletonFrame));
                }
            }
        }