c ++ - OpenCV的cvWaitKey()函数有什么作用?
在执行cvWaitKey()期间会发生什么? 什么是典型的用例? 我在OpenCV参考中看到过,但文档的确切用途并不明确。
Simplicity asked 2019-06-21T01:44:51Z
9个解决方案
120 votes
cv::imshow()做了两件事:
在OpenCV窗口上按键按下等待x毫秒(即从cv::imshow()创建)。 请注意,它不会在stdin上侦听控制台输入。 如果在此期间按下了某个键,它将返回该键的ASCII码。 否则,它返回cv::waitKey(30).(如果x为零,则无限期等待按键。)
它处理任何窗口事件,例如使用cv::imshow()创建窗口,或使用cv::waitKey(30)显示图像。
opencv新手的一个常见错误是在循环中通过视频帧调用cv::imshow(),而不用cv::waitKey(30)跟踪每次抽奖。在这种情况下,屏幕上不显示任何内容,因为highgui从未给予时间来处理来自cv::imshow()的抽取请求。
SuperElectric answered 2019-06-21T01:45:29Z
16 votes
简单,cvWaitKey()睡眠X毫秒,等待按任何键。
int cvWaitKey(int X);
如果按下某个键,则此函数返回密钥的ASCII代码。 如果在此期间没有按下任何键,则返回-1。
karlphillip answered 2019-06-21T01:46:02Z
12 votes
k停止您的程序,直到您按下按钮。
k不会停止您的程序,但会在按下按钮时唤醒并提醒您结束程序。 它用于循环,因为cvWaitkey不会停止循环。
正常使用
char k;
k=cvWaitKey(0);
if(k == 'ESC')
使用k,您可以看到按下了哪个键。
Jorge Vega Sánchez answered 2019-06-21T01:46:50Z
8 votes
注意任何可能遇到cvWaitKey( )功能问题的人。 如果您发现cvWaitKey(x)没有等待,请确保您实际打开一个窗口(即cvNamedWindow(...))。 在任何cvWaitKey()函数调用之前放置cvNamedWindow(...)声明。
Andy answered 2019-06-21T01:47:18Z
7 votes
。 参数while(cv::waitKey(1) != 27); // 27 = ascii value of ESC被解释为infinite
。 为了拖动highGUI窗口,您需要不断调用while(cv::waitKey(1) != 27); // 27 = ascii value of ESC函数。 例如,对于静态图像:
while(cv::waitKey(1) != 27); // 27 = ascii value of ESC
while(cv::waitKey(1) != 27); // 27 = ascii value of ESC
answered 2019-06-21T01:48:04Z
5 votes
/* Assuming this is a while loop -> e.g. video stream where img is obtained from say web camera.*/
cvShowImage("Window",img);
/* A small interval of 10 milliseconds. This may be necessary to display the image correctly */
cvWaitKey(10);
/* to wait until user feeds keyboard input replace with cvWaitKey(0); */
enthusiasticgeek answered 2019-06-21T01:48:24Z
4 votes
33只是提供了一些延迟。 例如:
char c = cvWaitKey(33);
if( c == 27 ) break;
这是我的代码的一部分,其中一个视频加载到openCV和输出的帧。 代码中的33数字表示在33ms之后,将显示一个新帧。 因此,在屏幕上显示的每个帧之间的间隔或时间间隔为33ms。希望这可以帮助。
sue-ling answered 2019-06-21T01:49:01Z
1 votes
cvWaitKey(milliseconds)只需等待作为键盘下一键击键参数提供的毫秒数。
人眼不能在不到1/10秒的时间内看到物体移动,所以我们使用它在屏幕上保持相同的图像帧一段时间。 一旦按下键盘键,就会执行下一个操作。
简而言之cvWaitKey(milliseconds)等待按键或millisecond提供的时间。
Pravin Dahale answered 2019-06-21T01:49:45Z
-1 votes
等待毫秒来检查按键是否被按下,如果在该间隔中按下则返回其ascii值,否则它仍为-1
Yassine Abdul-Rahman answered 2019-06-21T01:50:15Z