cv2.imshow命令在opencv-python中无法正常工作

我正在使用opencv 2.4.2,python 2.7下面的简单代码创build了一个正确名称的窗口,但是它的内容只是空白,并且不显示图像:

import cv2 img=cv2.imread('C:/Python27/03323_HD.jpg') cv2.imshow('ImageWindow',img) 

有没有人知道这个问题?

imshow()只适用于waitKey()

 import cv2 img = cv2.imread('C:/Python27/03323_HD.jpg') cv2.imshow('ImageWindow', img) cv2.waitKey() 

(更新窗口所需的整个消息循环隐藏在那里。)

我在这里find了适合我的答案: http : //txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html

如果您运行交互式ipython会话,并且想要使用highgui窗口,请先执行cv2.startWindowThread()。

详细信息:HighGUI是一个简化的界面,用于显示来自OpenCV代码的图像和video。 它应该像以下一样简单:

 import cv2 img = cv2.imread("image.jpg") cv2.startWindowThread() cv2.namedWindow("preview") cv2.imshow("preview", img) 

你必须在cv2.imshow("window",img)之后使用cv2.waitKey(0) cv2.imshow("window",img) 。 只有这样才能工作。

 import cv2 img=cv2.imread('C:/Python27/03323_HD.jpg') cv2.imshow('Window',img) cv2.waitKey(0) 

我面临同样的问题。 我尝试从IDLE读取图像,并尝试使用cv2.imshow()显示,但显示窗口冻结并显示pythonw.exe在尝试closures窗口时未响应。

下面的post给出了为什么发生这种情况的可能的解释

pythonw.exe没有响应

基本上,不要从IDLE做这个,写一个脚本,直接在shell或脚本中运行它,如果在windows中,用.py扩展名并双击它,IDLE自己的事件循环和GUI工具包中的。

当我在脚本中使用imshow()并执行它而不是直接在IDLE上运行它时,它工作正常。

我有类似的问题,并通过删除解决

 import gtk, pygtk # remove these 

我正在使用Linux,所以也可能是GTK也不行。 我打算用它来获得屏幕大小,并排放置两个显示的图像,但我想我必须想出另一种方式来做到这一点。 现在硬编码它1920×1080 ..

你已经在这个线程的某个地方获得了所有必要的部分:

 if cv2.waitKey(): cv2.destroyAllWindows() 

在IDLE工作正常。

如果你还没有这个工作,你最好放

 import cv2 img=cv2.imread('C:/Python27/03323_HD.jpg') cv2.imshow('Window',img) cv2.waitKey(0) 

放入一个文件并运行。

如果您select使用“cv2.waitKey(0)”,请确保您已写入“cv2.waitKey(0)”而不是“cv2.waitkey(0)”,因为小写的“k”可能会冻结您的程序。

我用pyplot使用openCV ,并能够使用pyplots imshowshow来在jupyter的当前窗口中呈现图像

  import matplotlib.pyplot as plt import matplotlib.image as mpimg # First, we need to read in an image image = mpimg.imread('my_image.jpg') plt.imshow(image) # then using openCV's algorithms on the image, eg grey scale import cv2 gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) #grayscale conversion # finally output the result through pyplot in the current window plt.imshow(gray, cmap='gray') plt.show()