OpenCV - 在捕获循环中没有显示没有等待键的图像[重复]

Posted

技术标签:

【中文标题】OpenCV - 在捕获循环中没有显示没有等待键的图像[重复]【英文标题】:OpenCV - No image shown without waitkey in the capture loop [duplicate] 【发布时间】:2016-12-17 03:10:20 【问题描述】:

OpenCV 中,如果我在捕获图像的显示循环中不包含 Cv2.WaitKey(1) 行,则屏幕上不会呈现任何图像。 C++、phyton 或 C# 也是如此。

这是什么原因造成的,还有其他选择吗?

这个例子是用 C# 编写的(opencvsharp):

VideoCapture cap = new VideoCapture();

Window w = new Window();    

cap.Open("animation.avi");

while (cap.Read(src)) 
    Cv2.WaitKey(1);
    w.ShowImage(src);

【问题讨论】:

@Rama Nah 这更像是为什么您需要调用它才能看到图像。我想他知道自己能做什么 【参考方案1】:

从技术上讲,highgui 需要调用 waitkey() 以便有时间更新窗口。

来自 OpenCV 文档,参考 imshow() 函数(C# 中的 ShowImage):

这个函数后面应该有waitKey函数,它显示 指定毫秒的图像。否则不会显示 图片。例如,waitKey(0) 将无限显示窗口 直到任何按键(它适用于图像显示)。等待键(25) 将显示一帧 25 毫秒,之后将显示 自动关闭。 (如果你把它放在一个循环中阅读视频,它会 逐帧显示视频)

关于waitKey() 函数(C# 中的WaitKey()):

该函数是HighGUI中唯一可以获取和处理的方法 事件,因此需要定期调用它以进行正常事件 处理,除非在一个环境中使用 HighGUI 关心事件处理。

【讨论】:

您能否提供引用的 OpenCV 文档的链接或参考? docs.opencv.org/2.4/modules/highgui/doc/… OpenCV 3.1.0 专用:docs.opencv.org/trunk/d7/dfc/…

以上是关于OpenCV - 在捕获循环中没有显示没有等待键的图像[重复]的主要内容,如果未能解决你的问题,请参考以下文章

opencv 3 -- waitKey()函数

OpenCV - imshow()在等待来自命令窗口的输入时没有响应

使用opencv线程捕获空白图像

(相机校准)如何让我的循环读取图像只等待 10 秒,如果没有任何东西移动到下一张图像?

Qt OpenCV从捕获帧写入视频,不保存

为啥我在for循环中进行了一些更改后键的值没有改变