我正在尝试开发一种逻辑来识别用户右手制作的圆圈,我得到了从示例代码中绘制骨架和跟踪的代码,
private void SensorSkeletonFrameReady(object sender, SkeletonFrameReadyEventArgs e)
{
Skeleton[] skeletons = new Skeleton[0];
using (SkeletonFrame skeletonFrame = e.OpenSkeletonFrame())
{
if (skeletonFrame != null)
{
skeletons = new Skeleton[skeletonFrame.SkeletonArrayLength];
skeletonFrame.CopySkeletonDataTo(skeletons);
}
}
using (DrawingContext dc = this.drawingGroup.Open())
{
// Draw a transparent background to set the render size
dc.DrawRectangle(Brushes.Black, null, new Rect(0.0, 0.0, RenderWidth, RenderHeight));
if (skeletons.Length != 0)
{
foreach (Skeleton skel in skeletons)
{
RenderClippedEdges(skel, dc);
if (skel.TrackingState == SkeletonTrackingState.Tracked)
{
this.DrawBonesAndJoints(skel, dc);
}
else if (skel.TrackingState == SkeletonTrackingState.PositionOnly)
{
dc.DrawEllipse(
this.centerPointBrush,
null,
this.SkeletonPointToScreen(skel.Position),
BodyCenterThickness,
BodyCenterThickness);
}
}
}
// prevent drawing outside of our render area
this.drawingGroup.ClipGeometry = new RectangleGeometry(new Rect(0.0, 0.0, RenderWidth, RenderHeight));
}
}
我现在要做的是跟踪用户右手的坐标进行手势识别,
以下是我计划完成工作的方式:
- 开始手势
- 绘制圆圈手势,确保存储开始的坐标,然后记下关节从开始开始每移动 45 度的坐标,对于 8 个八分圆,我们将获得 8 个样本。
- 为了决定画了一个圆圈,我们可以检查八个样本之间的关系。
此外,在深度图像中,我想显示绘制手势的轨迹,因此当手点移动时,它会留下痕迹,所以最后我们会得到一个用户绘制的图形。我不知道如何实现这一目标。