我在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代码。
如何解决这个问题?
答案 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)