2012-07-21 52 views
7

Trong đoạn mã sau, DestroyWindow hoặc DestroyAllWindows không thể đóng cửa sổ được mở bởi ShowImage. Khi tôi cố gắng đóng nó bằng cách nhấp vào nút đóng, cửa sổ bị treo. Sau khi giết cửa sổ, toàn bộ IDLE đóng lại.OpenCV DestroyWindow không hoạt động trên Ubuntu. Cách đóng cửa sổ chính xác?

import cv 
image = cv.LoadImage("../lena.bmp", 0) 
cv.NamedWindow("test") 
cv.ShowImage("test", image) 
cv.WaitKey() 
cv.DestroyWindow("test") #or cv.DestroyAllWindows() 

Tôi đang sử dụng OpenCV 2.4.2 với Python 2.7 trên Ubuntu 12.04 LTS.

Tôi đã làm gì sai và làm cách nào để đóng cửa sổ bằng ShowImage?

+0

Bạn tìm một giải pháp cho điều này hoặc đã bị mở một lỗi? Tôi thực sự mệt mỏi vì phải giải quyết các vấn đề về OpenCV trên Linux. – elaRosca

+1

Xem câu hỏi này: http://stackoverflow.com/questions/6116564 –

Trả lời

2

Tôi tin rằng cv.WaitKey nên được gọi với một số làm đối số, 0 hoặc n> 0, trong đó n> 0 chỉ định số mili giây chờ đợi.

cv.WaitKey (0) sẽ đợi vô thời hạn cho một lần nhấn bàn phím, sau đó trả về đầu vào ký tự. Nhấn một nút bàn phím sẽ đóng cửa sổ, nếu bạn chưa thử.

+2

Cảm ơn lời khuyên của bạn. Nhưng bất cứ điều gì tôi thay đổi WaitKey() để WaitKey (0) hoặc WaitKey (1), cửa sổ vẫn giữ nguyên. Cùng một mã chạy tốt dưới Windows 7. Tôi tự hỏi liệu OpenCV có cách độc đáo của nó để tạo và đóng một cửa sổ dưới Ubuntu? Hoặc OpenCV không hỗ trợ hệ thống Ubuntu mới nhất 12.04 LTS? – 123hurray

1

Hãy thử chỉ này:

c = cv.WaitKey(27) 
if c == 27: 
    cv.DestroyAllWindows("Test") 
    break 
+2

Bạn có thể giải thích điều này sẽ làm gì không? Từ [docs] (http://opencv.willowgarage.com/documentation/python/user_interface.html#waitkey) Tôi hiểu điều này sẽ đợi một lần bấm phím trong 27 mili giây, sau đó trả về -1 (hoặc mã khóa). Tại sao so sánh 'c' với 27 thay vì tên hằng số mô tả cho mã khóa đó? –

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