void sensor_DepthFrameReady(AllFramesReadyEventArgs e)
        {
            using (DepthImageFrame depthFrame = e.OpenDepthImageFrame())
            {
                if (depthFrame == null)
                {
                    return;
                }

                //turn raw data into an array of distances;
                var depthArray = depthFrame.ToDepthArray();

                MidPointDistanceViaGetDistanceText.Text = depthFrame.GetDistance(depthFrame.Width / 2, depthFrame.Height / 2).ToString();

                //image
                DepthImageWithMinDistance.Source = depthArray.ToBitmapSource(depthFrame.Width, depthFrame.Height,
                                                                             _minDistance, Colors.Red);

                //image
                DepthImage.Source = depthFrame.ToBitmapSource();

                if (_saveDepthFrame)
                {
                    _saveDepthFrame = false;
                    depthFrame.ToBitmapSource().Save(DateTime.Now.ToString("yyyyMMddHHmmss") + "_depth.jpg", ImageFormat.Jpeg);
                }
            }
        }
Beispiel #2
0
        void RuntimeDepthFrameReady(AllFramesReadyEventArgs e)
        {
            using (DepthImageFrame depthFrame = e.OpenDepthImageFrame())
            {
                if (depthFrame == null)
                {
                    return;
                }

                //turn raw data into array of distances
                var depthArray = depthFrame.ToDepthArray();

                //get image
                DepthImage.Image = depthFrame.ToBitmap();

                //get midpoint
                MidPointDistanceViaGetDistanceText.Text = depthFrame.GetDistance(depthFrame.Width / 2, depthFrame.Height / 2).ToString();

                //image
                DepthImageWithMinDistance.Image = depthArray.ToBitmap(depthFrame.Width, depthFrame.Height, _minDistance, Color.FromArgb(255, 255, 0, 0));

                if (_saveDepthFrame)
                {
                    _saveDepthFrame = false;
                    depthFrame.ToBitmap().Save(DateTime.Now.ToString("yyyyMMddHHmmss") + "_depth.jpg", ImageFormat.Jpeg);
                }
            }
        }
        private Bitmap CreateBitmapFromSensor(DepthImageFrame frame)
        {
            int width     = frame.Width;
            int height    = frame.Height;
            var pixelData = frame.ToDepthArray();

            //var pixelData = new short[frame.PixelDataLength];
            //frame.CopyPixelDataTo(pixelData);
            var bmp = new Bitmap(frame.Width, frame.Height);

            for (int y = 0; y < height; y++)
            {
                int basePositionY = y * width;
                for (int x = 0; x < width; x++)
                {
                    int  realOositionY = basePositionY + x;
                    byte red           = (byte)(pixelData[realOositionY] >> 8);
                    byte green         = 125;
                    byte blue          = (byte)(pixelData[realOositionY] & 255);;
                    bmp.SetPixel(x, y, Color.FromArgb(red, green, blue));
                }
            }
            return(bmp);
        }