Kinect paint - 手跟踪c#,kinect SDK 1.7

时间:2014-09-26 08:40:25

标签: c# wpf sdk kinect

我正在尝试制作一些简单的应用程序,它允许您用右手在画布上绘画。 幸运的是我知道如何制作绘画功能,但我对其他东西有点问题。 如您所知,SDK允许您使用名为KinectRegion的控件,该控件具有KinectCursor,它是用户手的表示。

问题在于,我不知道为什么当我试图画一些东西时,我的绘画路径的起点与我的KinectCursor不同?

当我使用自己的右手映射功能时,我没有这个问题,但在这种情况下,我不能使用其他东西,比如KinectCircleButton,因为我没有KinectRegion。

任何人都知道如何从KinectRegion获取或映射KinectCursor位置(x,y)?

我的问题的可视化: [IMG] http://i58.tinypic.com/iqgemt.png[/IMG]

2 个答案:

答案 0 :(得分:0)

我正在研究类似的Kinect绘画项目。实际上你需要的位置在HandPointer中。您可以通过一个名为GetPosition(UIElement element)的方法获取您的手相对于UIElement的位置,该方法显然将该元素作为参数。

使用该方法的示例如下所示:

public partial class MainWindow
{
    public Point position;

    public MainWindow
    {
        KinectRegion.AddHandPointerMoveHandler(this, OnHandPointerMove);
    }

    private void OnHandPointerMove(object sender, HandPointerEventArgs e)
    {
        position = e.HandPointer.GetPosition(myCanvas);
    }
}

答案 1 :(得分:0)

现在事情是你的手位置和kinect手位置在X和Y都有一个间隙。尽量使这些间隙为零。然后你的手将准确地绘制绘画点。例如,对于手点和绘画笔点,输出x,y立即坐标。并获得x坐标和y坐标的单独间隙。现在这些差异应分别从x和y中扣除。那么你的手和画笔点将相应地映射。