我可以用kinect v2.0绘制身体并进行背景去除吗?

时间:2017-05-26 12:43:34

标签: c# visual-studio kinect kinect-sdk kinect-v2

所以我使用的是Kinect v2.0。

我想跟踪身体并在身体上绘制骨骼。 我成功地做到了这一点,但是当我想添加背景去除时,它不再能够画出我的骨架了。那么,这就是我如何获得框架,深度和身体指数:

var reference = e.FrameReference.AcquireFrame();
// Color
using (var frame = reference.ColorFrameReference.AcquireFrame())

//depth
using (var depthFrame = reference.DepthFrameReference.AcquireFrame())

//Body index
using (var bodyIndexFrame = reference.BodyIndexFrameReference.AcquireFrame())

这是绿屏和显示正文的代码:

// Body
using (var bodyframe = reference.BodyFrameReference.AcquireFrame())
{
    if (bodyframe != null)
    {
        if (frame != null && depthFrame != null && bodyIndexFrame != null)
        {
            if (viewer.Visualization == Visualization.Color)
            {
                //viewer.Image = frame.ToBitmap();
            }
            image.Source = frame.GreenScreen(depthFrame, bodyIndexFrame);
        }
        var bodies = bodyframe.Bodies();
        _playersController.Update(bodies);
        //some calculations...
    }

注释行viewer.Image = frame.ToBitmap();用于显示框架。我想要绿屏,所以我取下了框架,但现在它不能吸引我的身体。如果我取消注释此行,将绘制骨架,但也会出现框架。我使用body = bodies.Closest();来检测最近的身体。我还在Visual Studio 2017中使用LightBuzz Vitruvius库和我编程。这是绘制实际骨架的地方:

if (body != null)
{
   viewer.DrawBody(body, 10.0, Brushes.Green, 10.0, Brushes.Green);
}

此处编写的每个代码都在void Reader_MultiSourceFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e)中。

我错过了什么吗?我忘了什么吗?这甚至可能吗?我不明白为什么我需要一个框架来画身体。

更新: 我认为这个问题是因为" viewer"。因为观看者在xaml中是一个窗口(框架)。我需要创建一个框架,而不是去除背景。还不确定如何。

0 个答案:

没有答案