所以我使用的是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中是一个窗口(框架)。我需要创建一个框架,而不是去除背景。还不确定如何。