问题描述
我已经编写了一个使用面部检测来刺激游戏的代码。我找到了脸的中心,并随着脸的移动,按了带有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