在 OpenCV 中 waitKey (30) 是啥意思? [复制]
Posted
技术标签:
【中文标题】在 OpenCV 中 waitKey (30) 是啥意思? [复制]【英文标题】:what does waitKey (30) mean in OpenCV? [duplicate]在 OpenCV 中 waitKey (30) 是什么意思? [复制] 【发布时间】:2012-09-17 01:20:27 【问题描述】:可能重复:OpenCV - cvWaitKey( )
我要过滤视频帧。
for(;;)
cap.read( frame);
medianBlur(frame,framedst,5);
imshow("frame",frame);
imshow("framedst",framedst);
if( waitKey (30) >= 0) break;
waitKey(30)
是什么意思?因为如果我注释掉if( waitKey (30) >= 0) break;
这一行,上面的代码就不行了!
【问题讨论】:
This question 询问waitkey
,我相信答案解释了为什么您的imshow
不起作用。引用答案,opencv 新手的一个常见错误是通过视频帧循环调用 cv::imshow(),而不使用 cv::waitKey(30) 跟踪每次绘制。在这种情况下,屏幕上不会出现任何内容,因为 highgui 从来没有时间处理来自 cv::imshow() 的绘制请求。
没错,我不怎么用OPENCV
@chris 当我使用网络摄像头作为输入时,我不必调用 waitKey。但是系统肯定会因为在太短的时间内显示太多而感到困惑。
【参考方案1】:
函数waitKey()
等待按键事件“延迟”(此处为 30 毫秒)。正如OpenCV documentation 中解释的那样,HighGui(imshow()
是 HighGui 的一个函数)需要定期调用 waitKey,以处理其事件循环。
也就是说,如果你不调用waitKey,HighGui不能处理windows事件,比如重绘、调整大小、输入事件等。所以只要调用它,即使有1ms的延迟:)
【讨论】:
我知道了,感谢您的快速回答。 那么这意味着 cWaitkey () 在 30 毫秒后与捕获图像没有任何关系。它必须等待并在显示窗口上显示图像。 对于waitKey
,我发现在Windows 上超时后它会返回-1 的假设有时是错误的——相反它会返回255。许多常见代码几乎立即退出它们的主循环。看来这个跨平台问题的解决方案是改用waitKeyEx
。以上是关于在 OpenCV 中 waitKey (30) 是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
我无法让 OpenCV 中的 CV2.waitKey 正常工作。运行 waitKey 后代码无响应