Пример #1
0
 void OnApplicationQuit()
 {
     if (_sensor != null)
     {
         _sensor.Dispose();
         _sensor = null;
     }
 }
Пример #2
0
        public MainWindow()
        {
            var sensor = V2Sensor.GetDefault();
            _sensor = sensor;

#if true
            {
                // setup depth stream
                var depthStream = new V2DepthStream(sensor.Sensor);

                // create the bitmap to display
                _depthSource = new WriteableBitmap(
                    depthStream.Resolution.Width(),
                    depthStream.Resolution.Height(),
                    96.0, 96.0, PixelFormats.Gray16, null);

                var depthWaitHandle = new ManualResetEvent(false);
                depthWaitHandle.SafeWaitHandle = new Microsoft.Win32.SafeHandles.SafeWaitHandle(
                    depthStream.CreateWaitHandle(), false);

                StartUpdating(depthWaitHandle, depthStream);
            }
#endif

#if false
            {
                // setup image stream
                var imageStream = new V2ImageStream(sensor.Sensor);

                // create the bitmap to display
                DepthSource = new WriteableBitmap(
                    imageStream.Width,
                    imageStream.Height,
                    96.0, 96.0, PixelFormats.Bgr32, null);

                var waitHandle = new ManualResetEvent(false);
                waitHandle.SafeWaitHandle = new Microsoft.Win32.SafeHandles.SafeWaitHandle(
                    imageStream.CreateWaitHandle(), false);

                StartUpdating(waitHandle, imageStream);
            }
#endif

            InitializeComponent();
        }
Пример #3
0
	// Update is called once per frame
	void Update () {
        if (_sensor == null)
        {
            var sensor = new V2Sensor();
            _depthStream = new V2DepthStream(sensor.Sensor);
            _sensor = sensor;
        }

        using (var frame = _depthStream.GetFrame())
        {
            if (frame == null)
            {
                return;
            }

            if (DepthTexture == null)
            {
                DepthTexture = new Texture2D(
                    _depthStream.Width, _depthStream.Height, TextureFormat.ARGB32, false);

                DepthTexture.filterMode = FilterMode.Point;

                _depth = new Int16[_depthStream.Width * _depthStream.Height];
            }

            Marshal.Copy(frame.Buffer, _depth, 0, _depth.Length);

            var pixel32s = _depth.Select((Int16 d) =>
            {
                var b = (Byte)(UInt16)d;
                return new Color32(
                    b, b, b, 255
                );
            }).ToArray();
            //Debug.Log(pixel32s.Length);
            DepthTexture.SetPixels32(pixel32s);
            DepthTexture.Apply();
        }
	
	}