【问题标题】:How to wait for two different keys using cv2.waitKey()如何使用 cv2.waitKey() 等待两个不同的键
【发布时间】:2019-05-23 16:35:04
【问题描述】:

我想实现一个函数,当 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一段时间,直到程序有反应。

有什么建议吗?

非常感谢。

【问题讨论】:

    标签: python-3.x cv2


    【解决方案1】:

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

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

    等待背后的原因是两个函数调用都读取了键盘缓冲区,因此只有当软件在第一个分支评估后立即收到 w 键时才会执行第二个分支。

    【讨论】:

    • 很好的解释,谢谢!
    【解决方案2】:

    尝试:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-13
      • 2017-12-04
      • 2018-12-10
      • 2020-07-29
      • 2016-09-26
      • 2020-01-14
      • 1970-01-01
      • 2023-03-12
      相关资源
      最近更新 更多