当它是垂直而不是水平时,是否可以用kinect跟踪物体?

时间:2016-02-16 08:18:57

标签: c# kinect kinect-sdk

我想知道是否有办法将我从kinect获得的图像旋转90度,这样我就可以挂起kinect verticaly,就像这样仍然跟踪身体?

因为当你垂直挂起它现在它没有跟踪任何东西,我认为这是正常的,因为它只是编程在垂直时寻找尸体,但有没有办法解决这个问题? / p>

我试图找到一种旋转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();
                }
            }
        }
    }

但我无法弄清楚如何使轮换发生。

谢谢!

1 个答案:

答案 0 :(得分:1)

处理彩色图像对您没有帮助,因为Body Tracking算法仅基于深度数据。

此外,如果您需要使用Microsoft Kinect SDK,则无法“更改”算法和传递给它的数据。实际上,您需要在将深度图像传递到人体跟踪器之前对其进行旋转,这对于此SDK来说根本无法实现。

我不确定是否可以使用其他框架完成此操作。但是,您可以做的是将一些镜头放在设备使用的镜头前,以旋转图像。或者你可以将设备拆开并尝试将镜头旋转90度......这取决于你。

希望这有帮助。