Я хочу отобразить изображение в OpenCV в полноэкранном окне без полей. Другими словами, будут отображаться только пиксели изображения, без меню, панели инструментов или фона окна.
При использовании imshow ()
или cvShowImage ()
не включайте его:
Я думаю, что проблема кроется в методе cvNamedWindow ()
, который создает главное окно WS_OVERLAPPED
, затем создает дочерний элемент и все функции, такие как imshow ()
или cvGetWindowHandle ()
работают с дочерним элементом.
Таким образом, даже команда Windows:
SetWindowLong((HWND)cvGetWindowHandle(winName), GWL_STYLE, WS_VISIBLE | WS_EX_TOPMOST | WS_POPUP);
не помогает, поскольку дочерний элемент не может стать без полей WS_POPUP
. У кого-то есть обходной путь?
P.S. Я попробовал следующий код:
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);