Подтвердить что ты не робот

Открытое окно Python OpenCV поверх других приложений

При выполнении OpenCV python script, содержащего: cv2.imshow(img), появившееся окно открывается за моим оконным окном. Это мягкое раздражение - есть ли способ открыть его вначале/сверху?

Несколько человек задали вопросы (здесь и здесь) о принуждении к постоянному поведению, но это, Я думаю, проще.

Платформа OS X и OpenCV 2.4.11

4b9b3361

Ответ 1

Откройте namedWindow до imshow, например:

cv2.namedWindow('ImageWindowName', cv2.WINDOW_NORMAL)
cv2.imshow('ImageWindowName',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Комментарий, если это делает что-то другое.

Ответ 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)
{

Ответ 3

Один из способов обойти это - установить все окна из OpenCV "frontmost" с помощью AppleScript.

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

Таким образом, все окна должны быть перенесены на передний план.