0
所以我寫了這個事件處理程序,我打電話給SkeletonFrameReady
。爲什麼SkeletonFrame的骨架是空的(Kinect)?
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
}