5

有没有办法限制 cv::WaitKey() 只等待一个按键?即esc按钮?我希望能够按除此目标键之外的任何键并使窗口保持打开状态。

4

2 回答 2

6

我只是偶然发现了这个问题,我很确定会有更多的人在寻找相同的答案。事实上,有一种非常简单的方法可以做到这一点。cv::waitKey() 返回一个与按下的键的键码相对应的整数。通过将 waitKey 调用放在一个循环中,将返回值与您正在寻找的键码进行比较,您可以等待特定的键。

但是这里有一个很大的陷阱:在某些平台上,最高有效位设置在返回值中,这意味着如果您将它们与普通键码进行比较,循环将永远不会中断。通过对除最重要的位之外的所有内容使用按位与来解决此问题:

while((cv::waitKey() & 0xEFFFFF) != 27); //27 is the keycode for ESC
于 2016-04-20T21:54:47.110 回答
-2

你可以这样做:

// Loop until escape is pressed
while (cvWaitKey(1) != '\33') {

}
于 2013-02-22T16:05:26.340 回答