我想在opencv中显示一个图像。我使用“namedWindow”创建一个窗口并使用“imshow”显示图像。在代码的末尾我使用“cin”,所以程序不会自动退出。我的部分代码如下所示:
namedWindow("image");
imshow("image",aa);
waitKey(500);
cin >> aaa;
return 0;
如果我消除 waitKey 语句,我看不到图像。为什么会这样?imshow 完成后不执行下一条语句(cin >> aaa)?为什么延迟很重要?
我想在opencv中显示一个图像。我使用“namedWindow”创建一个窗口并使用“imshow”显示图像。在代码的末尾我使用“cin”,所以程序不会自动退出。我的部分代码如下所示:
namedWindow("image");
imshow("image",aa);
waitKey(500);
cin >> aaa;
return 0;
如果我消除 waitKey 语句,我看不到图像。为什么会这样?imshow 完成后不执行下一条语句(cin >> aaa)?为什么延迟很重要?
与其说是延迟,那是必不可少的,但更多的是waitkey中的隐藏功能。
imshow 只会复制图像,但 waitkey 最终会对其进行 blit(或者,将消息发送到您的操作系统需要这样做)
所以无论如何你都需要调用waitkey,如果你使用imshow。1(毫秒)是你可以放在这里进行连续渲染的最小值,0 或 -1 将阻塞直到你按下一个键。
此外,waitkey 监听该 img 窗口中的按键,cin 监听来自控制台窗口的输入。
cv::WaitKEy(0) 图像将保留在那里