執行包含以下內容的OpenCV python腳本時,生成的窗口在我的終端窗口後面打開。這是一個輕微的刺激 - 有沒有什麼辦法讓它最初在前面/頂部打開?在其他應用程序之上的Python OpenCV打開窗口
許多人詢問關於強制持續行爲的問題(here和here),但我認爲這更簡單。
平臺OS X和OpenCV 2.4.11
執行包含以下內容的OpenCV python腳本時,生成的窗口在我的終端窗口後面打開。這是一個輕微的刺激 - 有沒有什麼辦法讓它最初在前面/頂部打開?在其他應用程序之上的Python OpenCV打開窗口
許多人詢問關於強制持續行爲的問題(here和here),但我認爲這更簡單。
平臺OS X和OpenCV 2.4.11
打開namedWindow
imshow
,例如前:
cv2.namedWindow('ImageWindowName', cv2.WINDOW_NORMAL)
cv2.imshow('ImageWindowName',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
評論,如果這使得任何不同。
這對我沒有任何影響。窗戶仍然像以前一樣打開。 Anaconda Python 3.5,opencv 3.2.0,Mac OS X Sierra 10.12.5。相反,請參閱此主題https://stackoverflow.com/a/8775078/4259243。打開窗口後,運行'os.system('''/ usr/bin/osascript -e'告訴應用程序「Finder」將進程「python」的最前面設置爲真'''')。 – sh37211
我能做什麼,我想你想通過添加一行到OpenCV的分配以下文件:
modules/highgui/src/window_cocoa.mm
它是圍繞線568,並且在字SETCHELL
後的單行代碼如下:
[window setFrameTopLeftPoint:initContentRect.origin];
[window setFirstContent:YES];
[window setContentView:[[CVView alloc] init]];
[window setHasShadow:YES];
[window setAcceptsMouseMovedEvents:YES];
[window useOptimizedDrawing:YES];
[window setTitle:windowName];
[window makeKeyAndOrderFront:nil];
// SETCHELL - raise window to top of stacking order
[window setLevel:CGWindowLevelForKey(kCGMaximumWindowLevelKey)];
[window setAutosize:(flags == CV_WINDOW_AUTOSIZE)];
[windows setValue:window forKey:windowName];
[localpool drain];
return [windows count]-1;
}
CV_IMPL int cvWaitKey (int maxWait)
{
真棒:)有可能只用python api就可以做到這一點嗎? – arnaud576875
@ arnaud576875我認爲Python只是在Mac上調用這個Objective-C API。所以,如果你使用Python,最終會被調用。 –
解決此問題的一種方法是使用AppleScript設置OpenCV「最前面」的所有窗口。
subprocess.call(["/usr/bin/osascript", "-e", 'tell app "Finder" to set frontmost of process "Python" to true'])
這樣,所有的窗戶應提請前面。
我無法測試這個,因爲我不在我的MacBook上...... – pradyunsg
我正在使用「鍵盤mastro」mac應用程序來執行此操作。首先在keyboard mastro中設置一個熱鍵作爲前面的活動「python」應用程序,並使用字符串鍵「opencvwindowinthefront」。然後,在python腳本,進口OS CMD = 「」 「 osascript -e '告訴應用程序 」系統事件「 擊鍵 」openvwindowinthefront「' 」「」 使用os.system(CMD) –