C# kinect中的两种骨骼跟踪方法是否正确?

C# kinect中的两种骨骼跟踪方法是否正确?,c#,windows,kinect,kinect-sdk,kinect-interaction,C#,Windows,Kinect,Kinect Sdk,Kinect Interaction,我已经使用kinect SDK在C#中开发了一个应用程序。现在我对追踪骷髅有点怀疑 我有两个代码,但有两种不同的方法。我想知道这两种方法导致了相同的概念?还是不同 代码1: void Kinect_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e) { using (SkeletonFrame frame = e.OpenSkeletonFrame()) { m_skeletons = n

我已经使用kinect SDK在C#中开发了一个应用程序。现在我对追踪骷髅有点怀疑

我有两个代码,但有两种不同的方法。我想知道这两种方法导致了相同的概念?还是不同

代码1:

void Kinect_SkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
    using (SkeletonFrame frame = e.OpenSkeletonFrame())
    {
       m_skeletons = new Skeleton[frame.SkeletonArrayLength];
       frame.CopySkeletonDataTo(m_skeletons);
    } 

     if(m_skeletons != null && m_skeletons.Length != 0)
     { 
         foreach (Skeleton skeleton in m_skeletons)
         {
            if (skeleton != null && skeleton.TrackingState == SkeletonTrackingState.Tracked)
            {
                //doing some operations 
            }


          }

      }

}
现在,另一种跟踪方法如下: 代码2:

既是
foreach(m_skeletons中的骨架)
,也是

foreach (Skeleton skeleton in m_skeletons.Where(s => s.TrackingState == SkeletonTrackingState.Tracked))

你说得对吗?有什么区别吗

这两种方法在功能上是等效的

.Where(s=>s.TrackingState==SkeletonTrackingState.Tracked)
创建一个已经包含检查的枚举数。因此,您的
foreach
将只迭代条件所适用的元素。在另一个示例中,使用
if
语句显式地执行此操作

foreach (Skeleton skeleton in m_skeletons.Where(s => s.TrackingState == SkeletonTrackingState.Tracked))