如果我运行以下代码
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具有非常基本的界面属性。正如the documentation所提到的,它不谈论已发布的事件:
函数waitKey无限等待键事件(当𝚍𝚎𝚕𝚊𝚢≤0)或延迟毫秒(当它为正时)。以来操作系统在切换线程之间的时间最短,该功能将不等待确切的延迟毫秒,它将至少等待延迟毫秒,具体取决于当时您的计算机上还运行着什么。它返回按键的代码;如果在按键之前没有按键,则返回-1指定的时间过去了。
在您的情况下,如果您仅使用按下事件,它将正常工作。不幸的是,您不能使用按下的事件来获得释放事件。您可以使用MouseEvent types代替keyEvent来发布事件,也可以使用注释中提到的Micka,最好使用基于ui的程序。