2017年9月2日土曜日

OpenCVでウィンドウ枠を消す

OpenCV (version 3.1.0)でウィンドウを表示するのはすごく便利だけど, プロジェクタに映像を出す場合などでフルスクリーンにしてもなぜか枠が消えない. 最も単純な方法はこれ.

int w = 1920; //メインディスプレイの水平解像度
cv::namedWindow("projector", 0);
cv::moveWindow("projector", w, 0);
cv::setWindowProperty("projector", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);
HWND hwnd = FindWindow(0, L"projector");
SetWindowLong(hWnd, GWL_STYLE, WS_POPUP);

SetWindowLong()で枠なしを指定する次のような方法も解説で書かれているけどやっぱり枠が消えない.

int w = 1920; //メインディスプレイの水平解像度
cv::namedWindow("projector", 0);
cv::moveWindow("projector", w, 0);
cv::setWindowProperty("projector", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);
HWND hwnd = FindWindow(0, L"projector");
SetWindowLong(hWnd, GWL_STYLE, WS_POPUP);

枠の色を黒に変更することでとりあえず枠が見えないようにすることはできたのでメモ.

int w = 1920; //メインディスプレイの水平解像度
cv::namedWindow("projector", 0);
cv::moveWindow("projector", w, 0);
cv::setWindowProperty("projector", CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);
HWND hwnd = FindWindow(0, L"projector");
SetClassLongPtr(hwnd, GCLP_HBRBACKGROUND, (LONG)CreateSolidBrush(RGB(0, 0, 0)));