2011-06-03 149 views
5

我正在使用openCV python绑定。我试图使用以下列表显示输出图像:无法在openCV中显示图像显示窗口

cv.NamedWindow('display') 
cv.MoveWindow('display', 10, 10) 
cv.ShowImage('display', cvImage) 

但我没有看到任何窗口。

我的平台是Linux(openSuse 11.4),python-opencv 2.1版和python 2.7。

+0

在附注上,你可能会考虑PyOpenCV,它是一个有点更有价值的Python绑定。 – susmits 2011-06-03 15:01:41

+0

@susmits谢谢:)但是它不适用于发行版。仅从源安装。 – Xolve 2011-06-03 17:09:14

+0

此问题出现在Linux中,但不在Windows系统中(至少不在Win 7中)。在Windows 7中,'cv.NamedWindow('...')立即显示窗口,即使没有'cv.WaitKey()' – 2012-05-09 07:50:48

回答

11

您需要调用WaitKey函数来处理事件。退房的文档:http://opencv.willowgarage.com/documentation/python/highgui_user_interface.html#waitkey

此功能可在HighGUI唯一的方法,可以获取和处理事件,所以它需要正常的事件处理进行定期调用,除非HighGUI正在内的一些环境,采取的护理使用事件处理。

只需在代码的末尾添加一个WaitKey(0),它应该可以正常工作。

+0

谢谢你的工作:)现在我面临另一个问题,我不能杀死它, DestroyWindow()似乎不起作用。 – Xolve 2011-06-03 17:22:09

+4

一旦你销毁了一个窗口,你将需要泵事件。在调用DestroyWindow('display')之后立即添加WaitKey(1)。这会导致它等待一个毫秒,这是不明显的,并摆脱窗口。 – susmits 2011-06-04 05:52:04

+0

这工作,谢谢:)我会指出openCV的gui功能不是那么好。通常,将图像保存到临时文件并在外部查看器中打开图像更好。 – Xolve 2011-06-04 06:02:23

0

除此信息外:WaitKey(1)不会等待1ms,但至少需要15ms ...如果需要,您可以测量。

+1

具体来说,这取决于平台到平台。例如,在Windows上,不可能等待执行消息循环的一个泵所需的时间。 – susmits 2013-10-22 07:52:13