我正在编写关于Kinect骨架轨道程序的程序。而手势的定义则写在程序中。我希望手势的定义由用户定义。这样做的一种方法是通过DFA。我不知道如何从C#开始。任何人都可以帮忙吗?
答案 0 :(得分:0)
尝试使用Lists存储骨架关节的坐标(缓冲区的种类),然后您可以运行DFA。你可以将过渡定义为每个方向的坐标范围,最后的状态是当缓冲区中的元素近似地位于同一区域时。
因此,在C#中,您需要创建一个数据类型来保存手势的序列,当用户为缓冲区添加一个列表时,这些手势会更新。如下所述。
保存手势时,您的代码将如下所示:
While(!Joint_stable && (i < buffer.count() ) )
{
While ((buffer.Joint.ElementAt(i+1).X-buffer.Joint.ElementAt(i)).X>0 && (buffer.Joint.ElementAt(i+1)-buffer.Joint.ElementAt(i).Y )>0 ) //Think about adding tolerence here
{
Gesture.add("Upper_Right");
}
...
}
只是一个建议,kinect传感器并不准确,所以试着建立一种容忍度。
我希望我的回答可以帮助你或至少给你一些灵感:)