【问题标题】:if cv2.waitKey(1) with 2 casesif cv2.waitKey(1) 有 2 种情况
【发布时间】:2022-07-01 21:13:31
【问题描述】:

我正在使用

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

退出程序,但我想将输入类型分为两种情况,例如:如果按“q”则退出,否则如果按“d”则执行某些操作。 我尝试使用 elif 但无法正常工作,因为程序仍在等待“q”。


另一个问题是:如果我想在你不按任何按钮的情况下使用超时 cv2.waitKey(1) & 0xFF == ord('q'),我该怎么做?

伪代码*

if timeout:
   if cv2.waitKey(1) & 0xFF == ord('q'):
      break
else:
   print("no interaction")
   do something

有什么变量(超时)可以做到这一点?

感谢您的帮助。

【问题讨论】:

  • 在你的代码中你有elif 来检查“d”是否被按下?你只检查“q”。
  • waitkey 的文档告诉您,您传递的数字是您等待按键被按下的毫秒数。如果您传递 0,它将无限等待,直到按下一个键。所以只需将此参数用作超时。 docs.opencv.org/4.x/d7/dfc/…

标签: python opencv


【解决方案1】:

这会等待一个键被按下并将其存储在key 中,您可以在您的条件下使用键码,如果在 1000 毫秒内没有按下任何键(k 将为 -1),它将退出。

k = cv2.waitKey(1000)
if k == -1:
    cv2.destroyAllWindows()
elif k == ord('a'):
    print("a key")


cv2.waitKey(0)

【讨论】:

    猜你喜欢
    • 2016-06-12
    • 2016-05-24
    • 1970-01-01
    • 2023-03-12
    • 2017-12-04
    • 2020-01-14
    • 1970-01-01
    • 2018-11-13
    • 1970-01-01
    相关资源
    最近更新 更多