有没有办法限制cv :: WaitKey()只等待一键按下?即esc按钮?我希望能够按下此目标键以外的任何键,并使窗口保持打开状态。
答案 0 :(得分:5)
我偶然发现了这个问题,我很确定会有更多人在寻找相同的答案。实际上有一种非常简单的方法可以做到这一点。 cv :: waitKey()返回一个与按下的键的键码对应的整数。通过将waitKey调用放在一个循环中,该循环将返回值与您正在查找的键代码进行比较,您可以等待特定的键。
这里有一个相当大的陷阱:在某些平台上,最重要的位是在返回值中设置的,这意味着如果只是将它们与普通的密钥代码进行比较,循环将永远不会中断。通过使用按位AND来解决这个问题,除了最重要的一点之外的所有内容:
while((cv::waitKey() & 0xEFFFFF) != 27); //27 is the keycode for ESC
答案 1 :(得分:-2)
你可以这样做:
// Loop until escape is pressed
while (cvWaitKey(1) != '\33') {
}