Beispiel #1
0
        private void ReadingLoop_CaptureReady(object sender, CaptureReadyEventArgs e)
        {
            using (var colorImage = e.Capture.ColorImage)
            {
                var was = colorImageVisualizer?.Update(colorImage);
                UpdateFpsIfNeeded(was, colorFps, nameof(ColorFps));
            }

            using (var depthImage = e.Capture.DepthImage)
            {
                var was = depthImageVisualizer?.Update(depthImage);
                UpdateFpsIfNeeded(was, depthFps, nameof(DepthFps));

                if (depthImage != null && transformation != null && depthOverColorImage != null && depthOverColorImageVisualizer != null)
                {
                    // Object can be disposed from different thread
                    // As a result depthOverColorImage may be disposed while we're working with it
                    // To protect from such scenario, keep reference to it
                    using (var depthOverColorImageRef = depthOverColorImage.DuplicateReference())
                    {
                        transformation.DepthImageToColorCamera(depthImage, depthOverColorImageRef);
                        depthOverColorImageVisualizer?.Update(depthOverColorImageRef);
                    }
                }
            }

            using (var irImage = e.Capture.IRImage)
            {
                var was = irImageVisualizer?.Update(irImage);
                UpdateFpsIfNeeded(was, irFps, nameof(IRFps));
            }
        }
Beispiel #2
0
 private void ReadingLoop_CaptureReady(object sender, CaptureReadyEventArgs e)
 => trackingLoop.Enqueue(e.Capture);