Re: [問題] opencv全螢幕?
※ 引述《sealoe (YoY)》之銘言:
自問自答XD orz
在Windows和GTK上面原理都是完全相同, 所以我用Win32的來說明.
小弟環境使用DEV-C/OPENCV 同樣的VC也一樣可以用這種方法
cvGetWindowHandle 是Opencv取得HWND的函式, 可是這個函式有點怪.
OpenCV在繪製圖型時一般使用
cvNamedWindow 創建視窗, cvShowImage把IplImage塞入視窗作顯示
一般人如我可能會想說使用 cvGetWindowHandle 配合
style = GetWindowLong(hWnd,GWL_STYLE);
SetWindowLong(hWnd,GWL_STYLE,(style&(~WS_CAPTION)));
SendMessage(hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
這種方式, 就可以透過sendmessage把視窗最大化,
但是這是不可行的, 因為OpenCV在繪圖時事實上是產生兩個視窗
一個主視窗, 一個內嵌於主視窗的子視窗, 換言之cvGetWindowHandle
取得的是子視窗之HWND, 所以你使用SendMessage的方式只能控制其內的子視窗
對於主視窗是完全沒有影響的.
此時怎麼辦呢? 這時候就必須使用FindWindow使用方法如下
//全螢幕 ===================
DWORD style=0;
hWnd= FindWindow(NULL, "ApolloCCTV太陽神擴視軟體"); //注意
//hWnd=cvGetWindowHandle("ApolloCCTV太陽神擴視軟體"); //是被內簽之視窗, 非主視窗
style = GetWindowLong(hWnd,GWL_STYLE);
SetWindowLong(hWnd,GWL_STYLE,(style&(~WS_CAPTION)));
SendMessage(hWnd, WM_SYSCOMMAND, SC_MAXIMIZE, 0);
//=================================================
此時透過FindWindow取得主視窗的HWND 再用SendMessage傳送SC_MAXIMIZE就ok了
: 請問opencv如何把所繪製的圖展現在全螢幕呢?
: 我找過網上的資料, 通常都是讀取螢幕大小
: 然後放大到跟螢幕一樣, 可是, 這樣上面還是有"一條" bar.
: 雖然可以用座標隱藏以來, 但是拉一拉還是跑出來.
: 我想做的是如全螢幕放電影般的效果.
: 平台是window, 和linux(GTK, 網上有資料, 但是似乎不能用)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.128.252.130
推
12/22 20:00, , 1F
12/22 20:00, 1F
推
12/22 20:05, , 2F
12/22 20:05, 2F
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章