2013-01-10 12 views
6

Oto uproszczona wersja mojego app:Jak ustawić fokus cv :: namedWindow w OpenCV2?

Mat img = imread("./picture.png"); 
namedWindow("Picture", CV_WINDOW_AUTOSIZE); 
imshow("Picture", img); 
waitKey(0); 

Kiedy wykonać skompilowaną aplikację (na MacOS 10.8.2 z OpenCV 2.4.3) okno jest otwarte pod oknie terminala i nie jest ostry. Muszę więc najpierw kliknąć (lub wejść do niego), a następnie nacisnąć dowolny klawisz, aby wykonać waitKey.

Czy można automatycznie ustawić ostrość na cv::namedWindow?

+1

zobacz: http://stackoverflow.com/questions/8417531/opencv-how-to-force-the-image-window-to-appear-on-top-of-other-windows lub http: // stackoverflow .pl/questions/5960968/opencv-window-always-on-top? lq = 1 – Smash

+0

Rozumiem. Na ich podstawie odpowiedź brzmi: "nie" lub "użyj cvGetWindowHandle" (która wydaje się być przestarzała w OpenCV2, przynajmniej nie mogę jej znaleźć nigdzie w dokumentach), a następnie zobacz, co robi MacOS dla okien. zarządzanie i napisanie jakiegoś paskudnego kodu specyficznego dla platformy. Przypuszczam, że to zrozumiałe, ponieważ highgui nie miało być solidnym szkieletem okienkowym. –

Odpowiedz

0

Prawdopodobnie można wyliczyć wszystkie okna i porównać ich tytuły z własnym tytułem okna. Nie wiem, jak to zrobić w systemie MacOS, ale w systemie Windows jest interfejs API, który wykonuje to zadanie: EnumWindows().

Ponieważ OpenCV 2.x nadal obsługuje wiele starych funkcji w stylu C, prawdopodobnie można sprawdzić, czy cvGetWindowHandle() jest nadal dołączone.