如何限制使用Pynput按下的键

问题描述

我已经编写了一个使用面部检测来刺激游戏的代码。我找到了脸的中心,并随着脸的移动,按了带有Pynput库的按键。该代码运行得很好,但是每当它检测到多次按下键盘键的点的移动时,这只是一个小问题。我想将按下的键限制为1。

'''

ORDER BY

'''

我得到这种输出

''' 向上 向上 向上 向上 向上 向上 向上 对 对 对 对 对 对 对 对 对 向上 向上 向上 向上 上

'''

解决方法

定义一些本机区域,在该区域中,面部应返回以区分一个击键和另一个击键,并使用标志进行观看。这是您要找的吗?

keystroke_zone = 100
home_zone = keystroke_zone - 10  # or whatever smaller than 
is_home = True

while(wc.isOpened()):

    ...

    if is_home:
        if centre_new[0] - centre[0] > keystroke_zone : 
            keyboard.press(Key.right)
            keyboard.release(Key.right)
            print('right')
            is_home = False

        if centre_new[0] - centre[0] < -keystroke_zone : 
            keyboard.press(Key.left)
            keyboard.release(Key.left)
            print('left')
            is_home = False

        if centre_new[1] - centre[1] < -keystroke_zone : 
            keyboard.press(Key.up)
            keyboard.release(Key.up)
            print('up')
            is_home = False

        if centre_new[1] - centre[1] > keystroke_zone : 
            keyboard = Controller()
            keyboard.press(Key.down)
            keyboard.release(Key.down)
            print('down')
            is_home = False
    else:
        if abs(centre_new[0] - centre[0]) < home_zone or\
                abs(centre_new[1] - centre[1]) < home_zone:
            is_home = True