用手势控制键盘

2024-04-20 14:15:27 发布

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

我有一些opencv代码,可以计算用户在相机前的手指数。该程序功能齐全,工作正常

但是,我正在尝试将键盘与我的程序连接起来。例如,如果用户举起1,则应按下“W”键;如果用户举起2,则应按下“a”键,依此类推

我决定为此使用应用程序脚本

if count+1 == 1:       
    app('System Events').keystroke('w')
if count+1 == 2:
    app('System Events').keystroke('a')
if count+1 == 3: 
    app('System Events').keystroke('s')
if count+1 == 4:
    app('System Events').keystroke('d')
if count+1 == 5:
    app('System Events').keystroke('c')

这段代码运行得很好,但有两件事我不知道怎么做:

  1. 在用户从相机中移除手势之前,我如何按住该键?例如,如果用户举起一根手指,那么只要一根手指向上,程序就应该按“W”

  2. 出于某种原因,每当我运行这段代码时,它都有摄像头,但过了一段时间,我的电脑就死机了,除了重新启动电脑,我什么都做不了。我觉得这与键盘有关,所以我设置了一个if语句:

key = cv2.waitKey(10)
if k == ord('q'):
    sys.exit()

然而,这似乎不起作用

如果有人能帮忙,我会非常感激的。提前谢谢


Tags: 代码用户程序app应用程序ifcount键盘
1条回答
网友
1楼 · 发布于 2024-04-20 14:15:27

这个问题应该对你有帮助detect key press in python?

您也可以尝试缩小游戏控制器或键盘等的行为,而不是使用类似.keystroke('c')的东西

它们对按钮使用位表示,例如

0 0 0 0 0 0 0 0   

第一个0向上,第二个向下。。。A、 B,X,Y。。。等等

所以对于一个D-PAD加上四个动作按钮,你有8位,一个字节

可以将其转换为0到255之间的数字,以表示每个按钮的状态,例如

1 0 1 0 0 0 0 1

可以是向上、向左、Y键,并且是某个整数

你可以在任何地方读到,例如https://www3.ntu.edu.sg/home/ehchua/programming/java/datarepresentation.html

您可以让您的图像处理返回该数字,并使用ttps://wiki.python.org/moin/BitwiseOperators

是的,你可能没有一个“真正的”控制器,但你有一些像控制器一样的东西。许多硬件输入设备在靠近硬件的较低级别上具有该表示

通常,当你设置你正在做的事情时,你可以创建一个虚拟输入设备。好的,如果你正在做一篇学士或硕士论文并创建一次性代码,你可以使用一堆if语句和单独的拉键。但如果这是一种更专业的方式,你可能会想要设置虚拟USB键盘之类的东西

我们使用手势控制做了类似的事情,就像鼠标一样。但这和手语的虚拟键盘一样

如果您只是想显示您可以移动某个窗口中的某个点,并且您正在使用Python在If循环中更新该点,那么请继续

但是,如果您计划与操作系统交互,则需要编写一些代码,以适合其人机输入设备的接口(例如USB HID)。在您的情况下,虚拟USB键盘或USB鼠标可以正常工作

PyGame也将看到这些设备,因此您可以查看PyGame中如何使用游戏控制器,并使用您的相机代码模拟游戏控制器

相关问题 更多 >