【发布时间】:2012-05-23 11:57:24
【问题描述】:
我正在使用 Kinect(微软官方)的新人脸跟踪 SDK,我注意到 c++ 和 c#-wpf 示例之间的检测存在差异:第一个比第二个(第一个实际上,我想使用)。在 c++ 版本中,面部跟踪几乎是即时进行的,而在 wpf 版本中,它仅在我将整个身体(所以整个骨架)放在 Kinect 的 FOV 中时才开始。
有人知道原因吗?我注意到提供的骨架框架显示属性“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 的代码。
【问题讨论】:
-
@OutlawLemur:已添加代码,但它是 Microsoft 提供的代码。问题是关于示例之间检测的差异,为什么即使我坐着 C++ 也会跟踪,而在 WPF 中我必须站起来?只有我遇到这种问题吗?
-
有关跟踪模式的详细信息,请参阅SkeletonTrackingMode,特别是
Seated -
@OutlawLemur 感谢您的帮助,但不同之处在于示例中调用的程序(不同的方法)。尽管如此,我还是不明白为什么,即使传感器设置为“就座”,骨架框架仍显示“默认”作为跟踪方法。