我无法让 OpenCV 中的 CV2.waitKey 正常工作。运行 waitKey 后代码无响应
Posted
技术标签:
【中文标题】我无法让 OpenCV 中的 CV2.waitKey 正常工作。运行 waitKey 后代码无响应【英文标题】:I can not get CV2.waitKey in OpenCV to work properly. After running waitKey the code get unresponsive 【发布时间】:2020-07-24 18:55:24 【问题描述】:我运行这个简单的代码来显示一张使用 OpenCV 的图片。该图片按预期显示在新窗口中。当我关闭窗口时,spyder 中的控制台卡住了,看起来仍在运行或等待。它看起来像 waitKey() 无法正常工作。我可以继续的唯一方法是重新启动控制台。 当我使用例如 waitKey(1000) 的数字时,程序工作正常,图片显示,窗口关闭,程序按预期完成。 我尝试从提示符运行 Anaconda shell 中的代码,但我遇到了同样的问题 我正在使用 python 3.7.5 非常感谢!
import cv2
cv2.imshow("title", img)
cv2.waitKey()
cv2.destroyAllWindows()
【问题讨论】:
使用 cv2.waitKey(0) @fmw42 零是默认值。有什么意义?? 我使用了 cv2.waitKey(0) 和默认值一样为零。只有当我使用另一个号码时才有效,但这不是我打算做的。感谢您的帮助 也许您可能由于控制台重新启动而打开了多个图像窗口,或者在控制台处理它之前手动关闭了窗口导致它变得混乱。该命令适用于其他所有人。我可以建议你安装 VSCode 并使用逐步调试功能来查看发生了什么,Spyder 不是适合这项工作的工具。 感谢 cmets,我试过 cv2.waitKey(0) 也没有用。这是默认设置。我重新启动电脑并尝试打开一张图片仍然显示相同的问题。我确实安装了 VSCode 并在那里尝试过。我有同样的问题。就像 cv2.destroyAllWindows() 被挂断了 【参考方案1】:在按下键之前,将焦点放在带有图像的图形窗口上。
【讨论】:
【参考方案2】:cv2.waitKey()
是一个函数,它会休眠一定的毫秒数,以保持打开 cv2.imshow()
的窗口显示。
正确的用法是以下两种情况之一:
cv2.waitKey(0)
:休眠直到用户按键;
cv2.waitKey(5)
:休眠 5ms。在这里,可以将数字 5
替换为任何大于零的值,以表示函数必须用于小睡的毫秒数;
在没有任何值的情况下调用 cv2.waitKey()
可能会触发意外行为。
【讨论】:
可以在文档here 中看到,该函数定义包含一个默认参数值 0 用于延迟int cv::waitKey ( int delay = 0 )
,因此在没有值的情况下调用它并没有什么意外,功能已定义
以上是关于我无法让 OpenCV 中的 CV2.waitKey 正常工作。运行 waitKey 后代码无响应的主要内容,如果未能解决你的问题,请参考以下文章