1

OpenCVCv2.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);
}
4

1 回答 1

1

从技术上讲,highgui需要waitkey()调用才能获得更新窗口的时间。

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

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

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

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

于 2016-12-17T03:30:11.663 回答