向Lord_Rebel要了转载权,TA翻译了10篇文章,就像我以前翻译c++。十分感谢她的努力,我全部转载到这里方便大家阅读。
【翻译】Leapmotion-python开发官方文档(1)
【翻译】Leapmotion-python开发官方文档(2)
【翻译】Leapmotion-python开发官方文档(3)
【翻译】Leapmotion-python开发官方文档(4)
【翻译】Leapmotion-python开发官方文档(5)
【翻译】Leapmotion-python开发官方文档(6)
【翻译】Leapmotion-python开发官方文档(7)
【翻译】Leapmotion-python开发官方文档(8)
【翻译】Leapmotion-python开发官方文档(9)
【翻译】Leapmotion-python开发官方文档(10)
(介于本人翻译能力有限,如有错误,望指出)
手指
手指和工具——有尖头的东西——由Pointable对象描述。此外,从Pointable类转换到Finger和Tool类,能提供更多特定的信息。
获得Pointable对象
你能个从Hand对象中获得与特定手相关的手指对象。你也可以从Frame对象中获得所有检测到的pointable(手指和工具)对象/
Pointable对象的特性
Pointable对象有许多属性描述其代表的手指或工具的特性。
Finger类的tipPosition和direction向量提供指尖坐标以及手指的方向向量。
LeapMotion软件将检测到的Pointable对象分类为一个手指或者工具。使用Pointable.isTool()函数判断Pointable对象所代表的类型。
Tool对象比手指长、细也更直。
Tip_position——在Leapmotion坐标系中指尖的实时坐标(单位:毫米)
Tip_velocity——指尖实时速率(mm/s)
Stabilized_tip_position—— 使用速率和过去时刻指尖位置所确定的稳定位置。
Direction——当前的方向向量。
Length——手指或工具的长度
Width——平均宽度
Touch_distance——与虚拟触碰平面的归一化距离。
Touch_zone——与Pointable对象当前关联的虚拟触碰平面
接下来的例子展示了如何从帧中获取pointable对象病访问其基本属性:
1 2 3 4 5 6 7 8 9 |
pointable = frame.pointables.frontmost direction = pointable.direction length = pointable.length width = pointable.width stabilizedPosition = pointable.stabilized_tip_position position = pointable.tip_position speed = pointable.tip_velocity touchDistance = pointable.touch_distance zone = pointable.touch_zone |
将Pointable对象
将Pointable对象转换成合适的Finger或Tool子类,需要使用对应的Finger或Tool的构造器。
1 2 3 4 |
if (pointable.is_tool): tool = Leap.Tool(pointable) else: finger = Leap.Finger(pointable) |
手指
Finger对象是Pointable对象的扩展,用于描述一个手指实体。一个手指有类型、方向向量、还有指骨对象。
在LeapMotion SDK 2.0版本中,五根手指均一直在手的手指列表中。LeapMption软件在它无法清楚地追踪到手指和骨头时会预估他们的位置。这样,手指在手掌前或者后面的运动就无法察觉可能无法在接收到的数据中予以体现。
手指对象可以定义类型,食指、大拇指、小指。手指对象的ID基于手对象的ID进行分配。如果一个手对象的ID是5,那么它的手指ID就是50到55,顺序从大拇指到小指
Pointable,Finger以及Tool列表
PointableList、FingerList、ToolList类都有相同的结构。他们都定义成类似std::vector风格的数组并支持迭代器操作。你无法撤销和改变你从Leap API得到的列表中的成员。但是你能将有相同类型对象的列表结合起来。
使用迭代器访问列表:
1 2 |
for hand in handList: print hand |
PointableList、FingerList以及ToolList类都定义了附加的函数用于基于Leap坐标系统的相对位置访问列表成员。这些函数包括leftmost(),rightmost(), and frontmost().
1 2 3 |
farLeft = frame.fingers.leftmost mostForwardOnHand = frame.hands[0].fingers.frontmost rightTool = frame.tools.rightmost |