我正在使用Kinect(微软官方)的新面部跟踪SDK,我注意到c和c#-wpf之间的检测存在差异:第一个是识别速度比第二个(我想要的速度快)实际使用) . 在c版本中,面部跟踪几乎是在飞行中,而在wpf中它只在我将整个身体(所以整个骨架)放在Kinect的视野中时开始 .
有没有人发现原因?我注意到提供的骨架显示了属性“Trackingmode = default”,即使我将kinect骨架流设置为就位 .
colorImageFrame.CopyPixelDataTo(this.colorImage);
depthImageFrame.CopyPixelDataTo(this.depthImage);
skeletonFrame.CopySkeletonDataTo(this.skeletonData);
// Update the list of trackers and the trackers with the current frame information
foreach (Skeleton skeleton in this.skeletonData)
{
if (skeleton.TrackingState == SkeletonTrackingState.Tracked
|| skeleton.TrackingState == SkeletonTrackingState.PositionOnly)
{
// We want keep a record of any skeleton, tracked or untracked.
if (!this.trackedSkeletons.ContainsKey(skeleton.TrackingId))
{
this.trackedSkeletons.Add(skeleton.TrackingId, new SkeletonFaceTracker());
}
// Give each tracker the upated frame.
SkeletonFaceTracker skeletonFaceTracker;
if (this.trackedSkeletons.TryGetValue(skeleton.TrackingId,
out skeletonFaceTracker))
{
skeletonFaceTracker.OnFrameReady(this.Kinect,
colorImageFormat,
colorImage,
depthImageFormat,
depthImage,
skeleton);
skeletonFaceTracker.LastTrackedFrame = skeletonFrame.FrameNumber;
}
}
}
代码是我的微软提供的1.5 SDK .
2 回答
我在其他论坛上有一些信息,特别是在这里(感谢这个人(blog)):
MSDN forum link
基本上,在c示例中,使用了跟踪面部的所有方法,颜色深度和颜色深度骨架,而在c#中仅使用后者 . 所以只有你站起来才会开始 .
我做了一些测试,但另一种方法仍然不适合我,我对代码做了一些修改,但没有运气 . 这是我的修改:
frame.TrackSuccessful始终为false . 任何的想法?
我终于弄清楚了,并在MSDN论坛上发布了一篇关于要使其工作还需要做些什么的帖子 .
It's here.
希望有所帮助!