cv2.imshow()函数打开一个总是说不响应的窗口 - python opencv

vic*_*cky 26 opencv python-2.7

我正在尝试运行一个非常简单的程序.打开和jpg文件并使用opencv库为python显示它.最初它一切正常,但现在它只是打开一个窗口,不显示图像,但说"没有响应".我需要去任务经理并关闭它!

from numpy import *
import matplotlib as plt
import cv2

img = cv2.imread('amandapeet.jpg')
print img.shape

cv2.imshow('Amanda', img)
Run Code Online (Sandbox Code Playgroud)

Abi*_*n K 48

你再错过了一行:

cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)

然后窗口显示图像,直到您按下键盘上的任意键.或者您可以传递如下:

cv2.waitKey(1000)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

这里,窗口显示1000毫秒或1秒的图像.在那之后,窗口将自动消失.但在某些情况下,它不会.所以你可以使用cv2.destroyAllWindows()强制销毁它

请先阅读更多教程:http://docs.opencv.org/trunk/doc/py_tutorials/py_tutorials.html

  • 最初它甚至没有cv2.waitKey(0)也能工作.它显示了窗口.但现在它出现了窗口,但表示没有回应.在我添加了cv2.waitKey(0)之后,它在窗口中显示图像,但窗口仍然显示没有响应.虽然所有这些都发生在很多次 (2认同)

小智 10

对我有用的解决方案:从内联图形切换到auto。它适用于SpyderJupyter笔记本。

  • 要更改 Spyder 设置:转到工具>首选项> IPhyton 控制台>图形> 后端:自动(将后端从内联更改为自动)
  • 要更改笔记本设置:输入命令:

    %matplotlib 自动


我的案例的一些背景(对于那些可能很快判断的人)

它曾经工作得很好:我可以打开一个图像,它会加载,并且它会响应(没有说“无响应”,可以关闭,聚焦等)然后我安装了一些软件包并运行了一些演示笔记本显然搞砸了一些设置(Spyder 打开的文件也被重置了)。

我尝试添加 waitKey(1) (以及 0、30、1000 等值)。它使图像加载,至少。但是图像框架是“无响应”:没有刷新、无法关闭、没有到达顶部等。不得不使用 cv2.destroyAllWindows() 关闭。

请注意,在 waitKey 期间一切正常。我把它放在一个循环中,在同一个命名窗口中显示相同的图像并等待几秒钟。在循环期间一切正常。一旦循环结束,图像窗口就会“无响应”(看起来像是 GUI 线程问题)。我尝试使用 cv2.startWindowThread(),并没有任何区别。

最后,从内联图形更改为自动使一切恢复正常。


Jul*_*lio 8

这些答案都不适用于MacOS.以下作品:

只需添加一cv2.waitKey(1) cv2.destroyAllWindows().

例:

import cv2
image = cv2.imread('my_image.jpg')
cv2.imshow('HSV image', hsv_image); cv2.waitKey(0); cv2.destroyAllWindows(); cv2.waitKey(1)
Run Code Online (Sandbox Code Playgroud)

  • 这对我也有用!图像最初显示为没有响应,现在按一下键后关闭。我花了很长时间才找到你的解决方案。谢谢。 (2认同)