我使用 kinect SDK 在 C# 中开发应用程序。现在我对跟踪骨架有疑问。
我有 2 个代码,但有 2 种不同的方法。我想知道这两种方法会导致相同的概念吗?还是不同?
代码 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:
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.Where(s => s.TrackingState == SkeletonTrackingState.Tracked))
{
//doing some operations
}
}
}
既是foreach (Skeleton skeleton in m_skeletons)
又是
foreach (Skeleton skeleton in m_skeletons.Where(s => s.TrackingState == SkeletonTrackingState.Tracked))
是正确的 ?有什么区别吗?