我想检测手指(或任何物体)是否指向某个方框(在屏幕上),如下图所示。
以下代码可用于获取手指的xy坐标,但是最简单的方法是定义交互框,然后映射坐标以查看它是否与屏幕外部的任何框匹配。< / p>
我在leap motion SDK
上使用Windows
(3.2.0)的最新版本。
def on_frame(self, controller):
app_width = 800
app_height = 600
# Get the most recent frame and report some basic information
frame = controller.frame()
pointable = frame.pointables.frontmost
if pointable.is_valid:
iBox = frame.interaction_box
leapPoint = pointable.stabilized_tip_position
normalizedPoint = iBox.normalize_point(leapPoint, False)
app_x = normalizedPoint.x * app_width
app_y = (1 - normalizedPoint.y) * app_height
#The z-coordinate is not used
print ("X: " + str(app_x) + " Y: " + str(app_y))
然后输出如下:
X: 467.883825302 Y: 120.019626617
X: 487.480115891 Y: 141.106081009
X: 505.537891388 Y: 164.418339729
X: 522.712898254 Y: 189.527964592
X: 539.482307434 Y: 213.160014153
X: 556.220436096 Y: 233.744287491
X: 573.109865189 Y: 253.145456314
答案 0 :(得分:0)
首先,此代码不会告诉您手指指向的位置。它只是告诉你指尖在空间中的位置 - 这是一个重要的,但也许是微妙的区别。
由于您可能在屏幕坐标中定义了您的方框,因此您只需检查每个方框以查看指尖位置是否在内部。类似的东西:
def check_in_box(box, point):
if point.x > box.left and point.x < box.right
and point.y > box.top and point.y < box.bottom:
return True
else:
return False
这假设您有一个合适的类来表示2D框。