OpenCV - 在捕获循环中没有显示没有waitkey的图像

时间:2016-12-17 03:10:21

标签: c# python c++ opencv3.1 opencvsharp

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);
}

1 个答案:

答案 0 :(得分:1)

技术上highgui需要调用waitkey()才能有时间更新窗口。

OpenCV 文档引用imshow()函数(C#中的ShowImage):

  

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

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

  

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