如何检测 OpenCV 中何时释放密钥?
Posted
技术标签:
【中文标题】如何检测 OpenCV 中何时释放密钥?【英文标题】:How to detect when a key is released in OpenCV? 【发布时间】:2020-01-27 01:43:34 【问题描述】:如果我运行以下代码
import cv2
cv2.namedWindow('Window')
while True:
key = cv2.waitKey(50)
print(key)
if key == ord('q'):
break
print('quit')
然后按i
(键码105
)一会儿,我得到了输出
-1
-1
-1
-1
-1
-1
105
-1
-1
-1
-1
-1
-1
-1
-1
-1
105
105
105
105
105
105
105
105
105
105
-1
-1
105
第一次出现是我按下i
的时间。即使我一直按下i
,我还是连续九次得到-1
。然后我不断得到105
,直到我释放i
。
在第一次出现105
后,我如何知道i
在这两种情况下都被按下时还是被释放了-1
?或者换句话说,您如何检测 OpenCV 中何时释放了某个键?
【问题讨论】:
opencv 的用户界面非常简陋。使用一些“真实”的 ui 框架来实现附加功能。 【参考方案1】:OpenCV 有一个非常基本的接口属性。正如the documentation 提到的,它没有谈论发布的事件:
函数waitKey无限期地等待一个按键事件(当 ?????≤0 )或延迟毫秒,当它为正时。自从 操作系统在切换线程之间有最短时间,该函数将 不完全等待延迟毫秒,它将至少等待延迟毫秒,具体取决于 那时您的计算机上还运行着什么。它返回 按下的键的代码或 -1 如果在之前没有按下任何键 指定时间已过。
在您的情况下,如果您只使用按下事件,它将正常工作。不幸的是,您无法使用按下事件获得释放事件。您可以使用MouseEvent types 而不是 keyEvent 来进行发布事件,或者像评论中提到的 Micka 一样,最好使用基于 ui 的程序。
【讨论】:
以上是关于如何检测 OpenCV 中何时释放密钥?的主要内容,如果未能解决你的问题,请参考以下文章