NameError:全局名称' CV_GUI_NORMAL'没有定义

时间:2015-03-03 14:58:24

标签: python python-2.7 opencv

我在Ubuntu 14.04上使用Python和OpenCV进行编码。当我单击鼠标右键时,相关的鼠标事件cv2.EVENT_RBUTTONDOWN不起作用,我宁愿得到上下文菜单("动作")。有没有办法禁用上下文菜单弹出窗口?

用户给了我一个提示,我确信解决方案就在那里。他要我添加CV_GUI_NORMAL,如here所示。

所以我运行:cv2.namedWindow("Window",CV_GUI_NORMAL)但是我收到了这个错误:

  

NameError:全局名称' CV_GUI_NORMAL'未定义

当我尝试cv2.CV_GUI_NORMAL而不是以下用户的评论时,我收到此错误:

  

AttributeError:' module'对象没有属性' CV_GUI_NORMAL'

请注意,类似的问题是here,但我不想更改OpenCV代码。

如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

WINDOW_AUTOSIZE = 1 WINDOW_FREERATIO = 256 WINDOW_FULLSCREEN = 1 WINDOW_GUI_EXPANDED = 0 WINDOW_GUI_NORMAL = 16 WINDOW_KEEPRATIO = 0 WINDOW_NORMAL = 0 WINDOW_OPENGL = 4096 WND_PROP_ASPECT_RATIO = 2 WND_PROP_AUTOSIZE = 1 WND_PROP_FULLSCREEN = 0 WND_PROP_OPENGL = 3 WND_PROP_VISIBLE = 4 中允许的窗口值为:

{{1}}

答案 1 :(得分:1)

官方documentation说:

  

的Python:   cv.NamedWindow(name,flags = CV_WINDOW_AUTOSIZE)→无   参数:   name - 窗口标题中可用作窗口标识符的窗口名称。   旗帜 -   窗户的标志。支持的标志是:

     

WINDOW_NORMAL如果设置了此项,用户可以调整窗口大小(无约束)。

     

WINDOW_AUTOSIZE如果设置了此项,则会自动调整窗口大小以适合显示的图像(请参阅imshow()),并且无法手动更改窗口大小。

     

WINDOW_OPENGL如果设置了此项,将使用OpenGL支持创建窗口。

只有Qt后端的一些实现支持CV_GUI_NORMAL。看来你别无选择,只能用Qt支持安装cv2或使用其他变量。

在这种情况下,您将使用cv2.CV_WINDOW_NORMAL

对于初学者,如果不需要,可以在没有Qt支持的情况下构建。在许多情况下,它似乎弊大于利。所以最好设置标志WINDOW_OPENGL:这样就可以禁用QT支持并获得OpenGL。

答案 2 :(得分:0)

您可以按以下方式使用cv2.WINDOW_GUI_NORMAL

cv2.namedWindow('desired_name_of_window', flags= cv2.WINDOW_GUI_NORMAL)