执行包含以下内容的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) –