gpt4 book ai didi

c# - 体感 SDK 2.0 : how to track one body

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:49 26 4
gpt4 key购买 nike

我正在使用 Kinect SDK 2.0,我只想跟踪一个骨架。

我如何实现这一目标?

我已经在 HD Face Basics 示例中尝试了 FindClosestSkeleton 方法,但这阻止了我的程序更新每一帧,而且我并不完全理解它。

有人可以解释并告诉我如何做到这一点吗?

最佳答案

以下代码基于BodyBasics-WPF 示例。

public class KinectManager
{
// Active Kinect sensor
private KinectSensor kinectSensor = null;

// Reader for body frames
private BodyFrameReader bodyFrameReader = null;

// Array for the bodies
private Body[] bodies = null;

// index for the currently tracked body
private int bodyIndex;

// flag to asses if a body is currently tracked
private bool bodyTracked = false;

public KinectManager()
{
this.kinectSensor = KinectSensor.GetDefault();

// open the reader for the body frames
this.bodyFrameReader = this.kinectSensor.BodyFrameSource.OpenReader();

// open the sensor
this.kinectSensor.Open();

this.bodyFrameReader.FrameArrived += this.Reader_FrameArrived;
}

// Handles the body frame data arriving from the sensor
private void Reader_FrameArrived(object sender, BodyFrameArrivedEventArgs e)
{
bool dataReceived = false;

using (BodyFrame bodyFrame = e.FrameReference.AcquireFrame())
{
if (bodyFrame != null)
{
if (this.bodies == null)
{
this.bodies = new Body[bodyFrame.BodyCount];
}
bodyFrame.GetAndRefreshBodyData(this.bodies);
dataReceived = true;
}
}

if (dataReceived)
{
Body body = null;
if(this.bodyTracked) {
if(this.bodies[this.bodyIndex].IsTracked) {
body = this.bodies[this.bodyIndex];
} else {
bodyTracked = false;
}
}
if(!bodyTracked) {
for (int i=0; i<this.bodies.Length; ++i)
{
if(this.bodies[i].IsTracked) {
this.bodyIndex = i;
this.bodyTracked = true;
break;
}
}
}

if (body != null && this.bodyTracked && body.IsTracked)
{
// body represents your single tracked skeleton
}
}
}
}

关于c# - 体感 SDK 2.0 : how to track one body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29835910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com