【翻译】Leapmotion-python开发官方文档(5)

手指

手指和工具——有尖头的东西——由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对象病访问其基本属性:
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的构造器。
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得到的列表中的成员。但是你能将有相同类型对象的列表结合起来。
使用迭代器访问列表:
for hand in handList:
    print hand

PointableList、FingerList以及ToolList类都定义了附加的函数用于基于Leap坐标系统的相对位置访问列表成员。这些函数包括leftmost(), rightmost(), and frontmost()
farLeft = frame.fingers.leftmost
mostForwardOnHand = frame.hands[0].fingers.frontmost
rightTool = frame.tools.rightmost




阅读更多
文章标签: LeapMotion Python api
个人分类: Leapmotion
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭