从Microsoft Kinect彩色摄像机视频流中分离出红色流

时间:2016-05-05 18:47:25

标签: colors sdk kinect

我想从Microsoft Kinect彩色摄像机视频流中分离红色,绿色,蓝色流。到目前为止,为了接收彩色视频流,我使用了Kinect for Windows SDK 2.0提供的示例代码。

每当收到新帧时,颜色帧的事件处理程序会将帧写入WriteableBitmap对象。如何在将红色颜色流复制到WriteableBitmap对象之前将其与颜色框分开?

private void Reader_ColorFrameArrived(object sender, ColorFrameArrivedEventArgs e)
    {
        // ColorFrame is IDisposable
        using (ColorFrame colorFrame = e.FrameReference.AcquireFrame())
        {
            if (colorFrame != null)
            {   
                FrameDescription colorFrameDescription = colorFrame.FrameDescription;

                    using (KinectBuffer colorBuffer = colorFrame.LockRawImageBuffer())
                    {
                        this.colorBitmap.Lock();

                        // verify data and write the new color frame data to the display bitmap
                        if ((colorFrameDescription.Width == this.colorBitmap.PixelWidth) && (colorFrameDescription.Height == this.colorBitmap.PixelHeight))
                        {
                            colorFrame.CopyConvertedFrameDataToIntPtr(
                                this.colorBitmap.BackBuffer,
                                (uint)(colorFrameDescription.Width * colorFrameDescription.Height * 4),
                                ColorImageFormat.Bgra);

                            this.colorBitmap.AddDirtyRect(new Int32Rect(0, 0, this.colorBitmap.PixelWidth, this.colorBitmap.PixelHeight));
                        }

                        this.colorBitmap.Unlock();
                    }
            }
        }
    }

每日.NET提示有一个article关于此,但他们在这里显示的代码不够明确。 This是我需要的结果(以及他们的文章中显示的每日.NET提示)。

请帮忙。

1 个答案:

答案 0 :(得分:0)

使用此方法 - colorFrame.CopyConvertedFrameDataToIntPtr - 我无法操纵framedata中的实际字节。

您需要手动执行此操作,并在for循环中处理字节。