执行期间会发生什么cvWaitKey()?什么是典型的用例?我在OpenCV参考中看到过,但文档的确切用途并不明确.
Sup*_*ric 131
cvWaitKey(x) / cv::waitKey(x) 做两件事:
cv::imshow().请注意,它不会在stdin上侦听控制台输入.如果在此期间按下了某个键,它将返回该键的ASCII码.否则,它返回-1.(如果x为零,则无限期等待按键.)cv::namedWindow()或显示图像cv::imshow().opencv新手的一个常见错误是cv::imshow()通过视频帧调用循环,而不用跟踪每个抽奖cv::waitKey(30).在这种情况下,屏幕上不显示任何内容,因为highgui永远不会有时间处理来自的绘制请求cv::imshow().
kar*_*lip 18
简单地说,cvWaitKey()睡眠时间为X毫秒,等待任何按键被按下.
int cvWaitKey(int X);
Run Code Online (Sandbox Code Playgroud)
如果按下某个键,则此函数返回密钥的ASCII代码.如果在此期间没有按下任何键,则返回-1.
Jor*_*hez 12
cvWaitKey(0) 停止你的程序直到你按下按钮.
cvWaitKey(10)不会停止你的程序,但是当你按下按钮时醒来并提醒你结束你的程序.它用于循环,因为cvWaitkey不会停止循环.
正常使用
char k;
k=cvWaitKey(0);
if(k == 'ESC')
Run Code Online (Sandbox Code Playgroud)
与k你所看到的按下了哪个键.
小智 8
注意任何可能遇到此cvWaitKey( )功能问题的人.如果你发现它cvWaitKey(x)根本没有等待,请确保你实际上有一个窗口打开(即cvNamedWindow(...)).cvNamedWindow(...)在任何cvWaitKey()函数调用之前放置声明.
小智 8
.论证0被解释为infinite
.为了拖动highGUI窗口,您需要不断调用该cv::waitKey()函数.例如,对于静态图像:
cv::imshow("winname", img);
while(cv::waitKey(1) != 27); // 27 = ascii value of ESC
/* 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); */
Run Code Online (Sandbox Code Playgroud)
这cvWaitKey只是提供了一些延迟。例如:
char c = cvWaitKey(33);
if( c == 27 ) break;
Run Code Online (Sandbox Code Playgroud)
这是我的代码的一部分,其中将视频加载到 openCV 并输出帧。33代码中的数字表示在 后,33ms将显示一个新帧。33ms因此,这是屏幕上显示的每一帧之间的延迟或时间间隔。希望这可以帮助。