【发布时间】:2011-09-24 14:54:47
【问题描述】:
我想在全屏无边框窗口中显示 OpenCV 中的图像。 换句话说,只会出现图像像素,没有菜单、工具栏或窗口背景。
使用imshow() 或cvShowImage() 不要启用它:
- 窗口增长为全屏 宽度而不是高度。它遗漏了几个像素。
- 即使更改窗口设置,我也无法使其无边框 处理程序。
我认为问题的根源在于cvNamedWindow() 方法,该方法创建主WS_OVERLAPPED 窗口,然后创建一个子窗口,并且所有函数(如imshow() 或cvGetWindowHandle())都对子窗口进行操作。
因此连windows命令:
SetWindowLong((HWND)cvGetWindowHandle(winName), GWL_STYLE, WS_VISIBLE | WS_EX_TOPMOST | WS_POPUP);
没有帮助,因为孩子不能成为无边界WS_POPUP。有人有解决方法吗?
- 也许,向窗口显示 opencv mat 不使用 opencv 内置方法
- 或者某种窗口技巧
附:我尝试了以下代码:
cvMoveWindow("AAA",0,0);
cvSetWindowProperty("AAA", CV_WINDOW_FULLSCREEN, CV_WINDOW_FULLSCREEN);
// Also I tried this:
HWND hwnd = (HWND)cvGetWindowHandle("AAA");
RECT windowRect;
windowRect.left = 0;
windowRect.top = 0;
windowRect.right = cxScreen; //Display resolution
windowRect.bottom = cyScreen; //Display resolution
AdjustWindowRect(&windowRect,WS_VISIBLE,false);
long p_OldWindowStyle = SetWindowLongPtr(hwnd,GWL_STYLE,WS_POPUP);
SetWindowPos(hwnd,HWND_TOP,0,0,windowRect.right,windowRect.bottom,SWP_FRAMECHANGED | SWP_SHOWWINDOW);
SetWindowLong(hwnd, GWL_STYLE, WS_VISIBLE | WS_EX_TOPMOST | WS_POPUP);
【问题讨论】: