私は Kinect (Microsoft 公式) の新しい顔追跡 SDK を使用していますが、c++ と c#-wpf の例では検出に違いがあることに気付きました: 最初のものは 2 番目のものよりも認識がはるかに高速です (私がしたいもの)実際に使用します)。C++ バージョンでは、フェイス トラッキングはほぼオンザフライですが、wpf バージョンでは、Kinect の FOV に体全体 (つまり、スケルトン全体) を配置したときにのみ開始されます。
誰かが理由を知りましたか?kinect スケルトン ストリームを着座に設定したにもかかわらず、提供されたスケルトン フレームに "Trackingmode = default" プロパティが表示されていることに気付きました。
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 を提供するものです。