【问题标题】:OpenCV DestroyWindow doesn't work on Ubuntu. How to close a window correctly?OpenCV DestroyWindow 在 Ubuntu 上不起作用。如何正确关闭窗户?
【发布时间】:2012-07-21 14:35:58
【问题描述】:

在以下代码中,DestroyWindow 或 DestroyAllWindows 无法关闭 ShowImage 打开的窗口。当我试图通过单击关闭按钮关闭它时,窗口暂停。杀掉窗口后,整个IDLE就关闭了。

import cv
image = cv.LoadImage("../lena.bmp", 0)
cv.NamedWindow("test")
cv.ShowImage("test", image)
cv.WaitKey()
cv.DestroyWindow("test")  #or cv.DestroyAllWindows()

我在 Ubuntu 12.04 LTS 上使用 OpenCV 2.4.2 和 Python 2.7。

我是不是做错了什么,如何关闭 ShowImage 创建的窗口?

【问题讨论】:

标签: python ubuntu opencv python-idle


【解决方案1】:

我认为 cv.WaitKey 应该以数字作为参数调用,0 或 n > 0,其中 n>0 指定等待的毫秒数。

cv.WaitKey(0) 将无限期地等待键盘按下,然后返回字符输入。如果您还没有尝试过,按下键盘按钮应该会关闭窗口。

【讨论】:

  • 感谢您的建议。但是无论我将 WaitKey() 更改为 WaitKey(0) 还是 WaitKey(1),窗口都保持不变。相同的代码在 Windows 7 下运行良好。我想知道 OpenCV 是否有其独特的方式来创建和关闭 Ubuntu 下的窗口?还是OpenCV不支持最新的Ubuntu系统12.04 LTS?
【解决方案2】:

试试这个:

c = cv.WaitKey(27)
if c == 27:
   cv.DestroyAllWindows("Test")
   break

【讨论】:

  • 你能解释一下这会做什么吗?从docs 我了解到这将等待按键 27 毫秒,然后返回 -1(或键码)。为什么要将 c 与 27 进行比较,而不是该键码的更具描述性的常量名称?
猜你喜欢
  • 2011-09-01
  • 1970-01-01
  • 2012-11-16
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 1970-01-01
  • 2018-12-15
相关资源
最近更新 更多