2013-01-10 33 views
6

Dưới đây là một phiên bản đơn giản của ứng dụng của tôi:Làm thế nào để đưa cv :: namedWindow vào trọng tâm trong OpenCV2?

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

Khi tôi thực hiện ứng dụng biên dịch (trên một hệ điều hành MacOS 10.8.2 với OpenCV 2.4.3) các cửa sổ được mở ra bên dưới cửa sổ terminal và không được lấy nét. Vì vậy, tôi phải lần đầu tiên bấm vào (hoặc tab vào) nó, và sau đó có thể nhấn phím bất kỳ cho waitKey được thực hiện.

Có thể tự động đưa cv::namedWindow vào tiêu điểm không?

+1

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

+0

Tôi hiểu. Vì vậy, dựa trên những câu trả lời là, hoặc 'không' hoặc 'sử dụng cvGetWindowHandle' (dường như không được chấp nhận trong OpenCV2; ít nhất tôi không thể tìm thấy nó ở bất kỳ đâu trong tài liệu) và sau đó tìm hiểu xem MacOS làm gì cho window- quản lý và viết một số mã nền tảng cụ thể xấu xí. Tôi cho rằng đó là dễ hiểu, vì highgui không có nghĩa là một khung cửa sổ mạnh mẽ. –

Trả lời

0

Bạn có thể liệt kê tất cả các cửa sổ và so sánh tiêu đề của chúng với tiêu đề cửa sổ của riêng bạn. Tôi không chắc chắn làm thế nào để làm điều đó trong MacOS nhưng theo Windows, có một API mà hiện công việc này cho bạn: EnumWindows().

Vì OpenCV 2.x vẫn hỗ trợ nhiều chức năng kiểu C cũ, bạn có thể kiểm tra xem cvGetWindowHandle() có được bao gồm hay không.

Các vấn đề liên quan