2015-07-10 13 views
13

Aşağıdaki pencereyi içeren bir OpenCV python komut dosyasını yürütürken, ortaya çıkan pencere terminal penceremin arkasında açılır. Bu hafif bir tahriştir - başlangıçta ön/üstte açmak için herhangi bir yolu var mı?Python OpenCV açık pencereleri diğer uygulamaların üstünde aç

Bazı kişiler, sürekli davranışı zorlamakla ilgili soruları sordular (here ve here), fakat bence bu daha basit.

Platformu OS X ve OpenCV 2.4.11

+0

Bunu yapmak için "keyboard mastro" mac uygulamasını kullanıyorum. Önce klavye dümene kısayol tuşu "opencvwindowinthefront" dize tuşu ile ön tarafta aktif "python" uygulaması olarak ayarlayın. Sonra piton komut, ithalat os içinde cmd = "" "-e osascript Bu benim için hiçbir etkisi yoktur ' ' ''" os.system (cmd) –

cevap

4

namedWindow örneğin imshow, önce:

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

Ekle Bu farklı kılan ise.

+0

Sistem Etkinlikleri uygulamasını anlatmak 'openvwindowinthefront' tuş için''. Pencere hala aşağıda olduğu gibi aşağıda açılır. Anaconda Python 3.5, opencv 3.2.0, Mac OS X Sierra 10.12.5. Bunun yerine, bu konuya https://stackoverflow.com/a/8775078/4259243 bakın. Pencereyi açtıktan sonra, os.system ('' '/ usr/bin/osascript -e' uygulamasının "Finder" komutunu çalıştırarak "python" işleminin en baştan "gerçek" "") çalışmasını sağlar. – sh37211

2

Ben OpenCV dağıtımında aşağıdaki dosyaya tek bir satır ekleyerek Ne istediğini ne düşündüğünü yapabilirsiniz: Yaklaşık hat 568 olduğunu

modules/highgui/src/window_cocoa.mm 

ve kelime SETCHELL sonra tek bir çizgidir aşağıdaki kodu:

[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) 
{ 
+0

Awesome :) Sadece python api ile bunu yapmak mümkün mü? – arnaud576875

+0

@ arnaud576875 Python'un bir Mac üzerinde bu Objective-C API'sini aradığını düşünüyorum. Yani, eğer Python kullanırsan, sonuçta bu yine de çağrılır. –

1

bir yolu bu geçici bir çözüm için AppleScript kullanarak "en öndeki" OpenCV gelen tüm pencereleri ayarlamak olacaktır.

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

Bu şekilde, tüm pencereler öne getirilmelidir.

+0

Bunu test edemedim çünkü MacBook'umda değilim ... – pradyunsg

İlgili konular