为什么骷髅帧是空的(Kinect)
本文关键字:Kinect 骷髅 为什么 | 更新日期: 2023-09-27 17:54:38
所以我写了这个事件处理程序,我在SkeletonFrameReady
上调用。
sensor.SkeletonFrameReady += InitializeHandler;
sensor.SkeletonStream.Enable();
这个想法是,它初始化传感器的方式,它计算关节坐标的平均值。然而,initSkeleton
仍然是null
,所以没有添加向量。为什么会发生这种情况?
private void InitializeHandler(object sender, SkeletonFrameReadyEventArgs e)
{
if (frame <= 10)
{
frame += 1;
using (SkeletonFrame initSkeletonFrame = e.OpenSkeletonFrame())
{
if (this.initSkeletons == null)
{
this.initSkeletons = new Skeleton[initSkeletonFrame.SkeletonArrayLength];
}
initSkeletonFrame.CopySkeletonDataTo(initSkeletons);
Skeleton initSkeleton = this.initSkeletons.Where(s => s.TrackingState == SkeletonTrackingState.Tracked).FirstOrDefault();
if (initSkeleton != null)
{
foreach (Joint j in initSkeleton.Joints)
{
Vector3D tmp = new Vector3D(j.Position.X, j.Position.Y, j.Position.Z);
vectors.Add(tmp);
Console.Write(vectors.Count);
}
}
}
}
// ... calculations
}
您只分析前10帧。如果在前10帧内(不到1秒)没有发现任何骨架,应用程序将不做任何操作。
只在找到骨架时执行frame += 1
指令。
if (initSkeleton != null)
{
frame += 1;
foreach (Joint j in initSkeleton.Joints) {...}
}