在 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);
}
答案 0 :(得分:1)
技术上highgui
需要调用waitkey()
才能有时间更新窗口。
从 OpenCV 文档引用imshow()
函数(C#中的ShowImage
):
此函数后面应显示waitKey函数 图像指定的毫秒数。否则,它将不会显示 图片。例如,waitKey(0)将无限显示窗口 直到任何按键(它适合图像显示)。 waitKey(25) 将显示一个25毫秒的帧,之后将显示 自动关闭。 (如果你把它放在一个循环中来阅读视频,它会 逐帧显示视频
关于waitKey()
函数(C#中的WaitKey()
):
此函数是HighGUI中唯一可以获取和处理的方法 事件,因此需要定期调用正常事件 处理除非在需要的环境中使用HighGUI 照顾事件处理。