【问题标题】:python opencv waitKey(1) not responding to input on Macpython opencv waitKey(1)没有响应Mac上的输入
【发布时间】:2021-09-03 07:28:43
【问题描述】:

我对 opencv 很陌生,我一直在尝试让用户输入退出我所有打开的窗口并退出 while 循环。我尝试了一堆不同的条件,并检查了我的 Mac 是否正在向 python 授予键盘权限,但由于某种原因,当我在键盘中输入任何内容时,waitKey 函数似乎没有注册。关于我应该做什么的任何建议?

while True:
    screenshot = py.screenshot()
    screenshot = np.array(screenshot)
    screenshot = cv.cvtColor(screenshot, cv.COLOR_BGR2RGB)

    cv.imshow('Computer Vision', screenshot)

    if cv.waitKey(1) == ord('q'):
        print("shit")
        cv.destroyAllWindows()
        break

【问题讨论】:

  • OpenCV 创建的窗口在你按键时是否有焦点?
  • 是的,但它似乎没有更新,即使它被选中并按下一个键。
  • 好的。 edit 问题并添加发生这种情况的 OpenCV 版本,并使您的示例成为正确的 minimal reproducible example 以允许其他使用 Mac 的人轻松复制它。

标签: python python-3.x opencv automation bots


【解决方案1】:

尝试cv2.waitKey(1) & 0xFF == ord('q'):,因为在某些操作系统上可能需要 0xFF。

您也可以尝试检查cv.waitKey(1)ord('q') 的值,看看它们有何不同。

【讨论】:

  • 我试图显示一个恒定的屏幕截图,当我使用 waitKey(0) 时,它不会连续显示屏幕截图,只是一个单一的
  • 抱歉,我明白了。也许试试if cv2.waitKey(1) & 0xFF == ord('q'):。在某些操作系统上似乎需要 0xFF。参考stackoverflow.com/questions/53357877/usage-of-ordq-and-0xff
  • 您也可以尝试检查cv.waitKey(1)ord('q') 的值,看看它们有何不同。
  • 对,所以我尝试了&0xFF的东西似乎没有什么区别,然后waitKey和ord('q)的值分别是-1和113。我只是无法让等待键返回 -1 以外的任何值
  • 它在超时时返回 -1(1 表示超时 1 毫秒)。致电waitKey(10000),让您有 10 秒的时间按键。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 2016-06-12
  • 2013-06-27
  • 2018-12-11
  • 1970-01-01
  • 2017-11-12
相关资源
最近更新 更多