C# kinect中的两种骨骼跟踪方法是否正确?
我已经使用kinect SDK在C#中开发了一个应用程序。现在我对追踪骷髅有点怀疑 我有两个代码,但有两种不同的方法。我想知道这两种方法导致了相同的概念?还是不同 代码1: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
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))