//Draw Depth Frame public static void DrawDepthFrame(TDepthFrame depthFrame) { int minDepth = depthFrame.MinDepth; int maxDepth = depthFrame.MaxDepth; // Convert the depth to RGB int colorPixelIndex = 0; for (int i = 0; i < depthFrame.DepthData.Length; ++i) { short depth = depthFrame.DepthData[i]; byte intensity = (byte)(depth >= minDepth && depth <= maxDepth ? depth : 0); ColorPixels[colorPixelIndex++] = intensity; ColorPixels[colorPixelIndex++] = intensity; ColorPixels[colorPixelIndex++] = intensity; ++colorPixelIndex; } DepthBitmap.WritePixels( new Int32Rect(0, 0, DepthBitmap.PixelWidth, DepthBitmap.PixelHeight), ColorPixels, DepthBitmap.PixelWidth * sizeof(int), 0); }
public void TDepthFrameHandler(object senderm, TDepthFrame frame) { if (!DepthFrameActive) { return; } DepthFrameReady(this, frame); }
public void Play(Stream stream) { _lastFrameTime = 0; var reader = new BinaryReader(stream); _cancellationTokenSource = new CancellationTokenSource(); var cancelToken = _cancellationTokenSource.Token; Task.Factory.StartNew(() => { while (reader.BaseStream.Position != reader.BaseStream.Length) { var frameType = (TFrameType)reader.ReadInt32(); switch (frameType) { case TFrameType.TColorFrame: var colorFrame = new TColorFrame(); colorFrame.Read(reader); SpeedControll(colorFrame.Timestamp); ColorFrameReady(this, colorFrame); break; case TFrameType.TDepthFrame: var depthFrame = new TDepthFrame(); depthFrame.Read(reader); SpeedControll(depthFrame.Timestamp); DepthFrameReady(this, depthFrame); break; case TFrameType.TSkeletonFrame: var skeletonFrame = new TSkeletonFrame(); skeletonFrame.Read(reader); SpeedControll(skeletonFrame.Timestamp); SkeletonFrameReady(this, skeletonFrame); break; } } reader.Close(); reader.Dispose(); if (ReplayEnded != null) { ReplayEnded(this, "Ended"); } }, cancelToken); }
public void SensorDepthFrameHandler(object sender, DepthImageFrameReadyEventArgs e) { if (_isPlaying) { return; } if (!DepthFrameActive) { return; } var sensorFrame = e.OpenDepthImageFrame(); if (sensorFrame != null) { var frame = new TDepthFrame(sensorFrame); DepthFrameReady(this, frame); } }
public static void SensorDepthFrameReady(object sender, TDepthFrame depthFrame) { Context.Send((gui) => DrawDepthFrame(depthFrame), null); }