我正在使用 Kinect(Microsoft 官方)的新人脸跟踪 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 的代码。