Python OpenCV在其他应用程序之上打开窗口

时间:2015-07-10 21:04:01

标签: python macos user-interface opencv

执行包含:cv2.imshow(img)的OpenCV python脚本时,生成的窗口将在终端窗口后面打开。这是一种轻微的刺激 - 有没有办法让它最初在前面/上面打开?

许多人提出了关于强制执行行为的问题(herehere),但我认为这更简单。

Platform OS X和OpenCV 2.4.11

3 个答案:

答案 0 :(得分:3)

myobject = Myobject() print myobject.id myobject.id = 7 print myobject.id 之前打开namedWindow,例如:

imshow

评论是否有任何不同。

答案 1 :(得分:2)

我可以通过在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)
{

答案 2 :(得分:2)

解决这个问题的一种方法是从OpenCV"最前面"设置所有窗口。使用AppleScript。

subprocess.call(["/usr/bin/osascript", "-e", 'tell app "Finder" to set frontmost of process "Python" to true'])

这样,所有的窗户都应该放在前面。