映射坐标以与二维交互框交互

2024-10-01 13:38:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想检测是否有手指(或任何物体)指向某个框(屏幕上),如下图所示。你知道吗

下面的代码可以用来获取手指的xy坐标,但是最简单的方法是定义交互框,然后映射坐标以查看它是否匹配屏幕外部的任何框。你知道吗

我在Windows上使用最新版本的leap motion SDK(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

interaction area


Tags: app屏幕iswidthframe物体指向手指
1条回答
网友
1楼 · 发布于 2024-10-01 13:38:22

首先,这个代码不会告诉你手指指向哪里。它只是告诉你指尖在空间中的位置一个重要的,但也许是微妙的区别。你知道吗

因为您可能已经在屏幕坐标中定义了框,所以您可以检查每个框,看看指尖位置是否在里面。比如:

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

这假设您有一个合适的类来表示二维长方体。你知道吗

相关问题 更多 >