如何使用cv2.waitKey()等待两个不同的键

时间:2019-05-23 07:46:39

标签: python-3.x cv2

我想实现一个功能,当cv2显示一些视频时,它可以等待两个不同的按键输入并以不同的方式响应它们。

我正在使用以下代码来等待特定的键:

if cv2.waitKey(1) & 0xFF == ord('q'):
    break

说我想使用第二个键“ w”并以不同的方式响应该键,我的第一次尝试是:

if cv2.waitKey(1) & 0xFF == ord('q'):
    break
elif cv2.waitKey(1) & 0xFF == ord('w'):
    print('w is pressed')

但是效果不是很好,我必须按住w一段时间,直到程序响应为止。

任何建议怎么做?

非常感谢。

2 个答案:

答案 0 :(得分:1)

尝试:

k = cv2.waitKey(1) & 0xFF

if k == ord('q'):
    break

elif k == ord('w'):
    print('w is pressed')

答案 1 :(得分:1)

问题是,waitKey方法被多次调用。您应该改用变量来存储结果并多次检查:

pressedKey = cv2.waitKey(1) & 0xFF
if pressedKey == ord('q'):
    break
elif pressedKey == ord('w'):
    print('w is pressed')

等待的原因是,两个函数调用均读取键盘缓冲区,因此仅当在第一个分支的撤换之后软件立即接收到w键时,第二个分支才会执行。