C# 了解Kinect Facetracker.track()方法
我正在使用Kinect v1和SDK 1.8。我需要将数据传递到C# 了解Kinect Facetracker.track()方法,c#,kinect,kinect-sdk,C#,Kinect,Kinect Sdk,我正在使用Kinect v1和SDK 1.8。我需要将数据传递到faceTracker.Track()方法 但是在track()的构造函数中,在最后询问骨架参数。 但不能将骨架数据直接带到骨架对象。它提供了一个数据数组 我如何将数据传递到此faceTracker.Track()方法作为所请求的跟踪方法 以下是我尝试的方式 using (SkeletonFrame skeletonFrame = allFramesReadyEventArgs.OpenSkeletonFrame()) {
faceTracker.Track()
方法
但是在track()的构造函数中,
在最后询问骨架参数。
但不能将骨架数据直接带到骨架对象。它提供了一个数据数组
我如何将数据传递到此faceTracker.Track()
方法作为所请求的跟踪方法
以下是我尝试的方式
using (SkeletonFrame skeletonFrame = allFramesReadyEventArgs.OpenSkeletonFrame())
{
if (skeletonFrame != null && this.skeletonData != null) // check that a frame is available
{
skeletonData = new Skeleton [newSensor.SkeletonStream.FrameSkeletonArrayLength];
skeletonFrame.CopySkeletonDataTo(this.skeletonData); // get the skeletal information in this frame
this.skeletonData = new Skeleton[this.newSensor.SkeletonStream.FrameSkeletonArrayLength];
}
}
跟踪法
if (faceTracker == null)
{
try
{
faceTracker = new FaceTracker(sensorChooser.Kinect);
}
catch (InvalidOperationException)
{
//write something
}
if (faceTracker != null)
{
FaceTrackFrame frame = faceTracker.Track(
sensorChooser.Kinect.ColorStream.Format,
colorImageData,
sensorChooser.Kinect.DepthStream.Format,
colorPixels,
skeletonData);
}
}
我定义了Skeleton[]skeletonData代码>如下所示
下面是Kinect SDK中给出的跟踪方法
public FaceTrackFrame Track(
ColorImageFormat colorImageFormat,
byte[] colorImage,
DepthImageFormat depthImageFormat,
short[] depthImage,
Skeleton skeletonOfInterest)
{
return this.Track(colorImageFormat, colorImage, depthImageFormat, depthImage, skeletonOfInterest, Rect.Empty);
}
我在kinect toolkit 1.8项目FaceTrackingBasics WPF应用程序的帮助下如上所述解决了这个问题
我在kinect toolkit 1.8项目FaceTrackingBasics WPF应用程序的帮助下如上所述解决了这个问题
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;
}
}
}