Re: [問題] opencv全螢幕?

看板Programming作者 (YoY)時間15年前 (2009/12/22 11:23), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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
good 感恩 教學
12/22 20:00, 1F

12/22 20:05, , 2F
12/22 20:05, 2F
文章代碼(AID): #1BC3kzeh (Programming)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1BC3kzeh (Programming)