2011-06-03 29 views
5

में छवि डिस्प्ले विंडो नहीं दिखा सकता है मैं ओपनसीवी पायथन बाइंडिंग का उपयोग कर रहा हूं। मैं निम्नलिखित लिस्टिंग का उपयोग कर आउटपुट छवि दिखाने की कोशिश कर रहा हूं:ओपनसीवी

cv.NamedWindow('display') 
cv.MoveWindow('display', 10, 10) 
cv.ShowImage('display', cvImage) 

लेकिन मुझे कोई विंडो नहीं दिखाई दे रही है।

मेरा प्लेटफ़ॉर्म लिनक्स (ओपनस्यूज 11.4), पायथन-ओपनसीवी संस्करण 2.1 और पायथन 2.7 है।

+0

एक तरफ नोट पर, आप PyOpenCV पर विचार कर सकते हैं, यह कुछ हद तक पाइथन बाध्यकारी है। – susmits

+0

@susmits धन्यवाद :) हालांकि यह distro repos के साथ उपलब्ध नहीं है। केवल स्रोत से स्थापना। – Xolve

+0

यह समस्या लिनक्स में दिखाई देती है, लेकिन विंडोज सिस्टम में नहीं (कम से कम विन 7 में नहीं)। विंडोज 7 'cv.NamedWindow (' ... ') में' तुरंत cv.WaitKey() ' –

उत्तर

11

आपको ईवेंट को संसाधित करने के लिए WaitKey फ़ंक्शन को कॉल करने की आवश्यकता है। प्रलेखन की जाँच करें: http://opencv.willowgarage.com/documentation/python/highgui_user_interface.html#waitkey

इस समारोह highgui में एकमात्र तरीका है कि लाने और घटनाओं को संभाल सकता है, इसलिए जब तक highgui कुछ वातावरण है कि का ख्याल रखता है के भीतर प्रयोग किया जाता है यह सामान्य घटना प्रसंस्करण के लिए समय-समय पर कॉल किया जाना चाहिए घटना प्रसंस्करण

बस अपने कोड के अंत में एक प्रतीक्षाकी (0) जोड़ें और इसे ठीक काम करना चाहिए।

+0

धन्यवाद के बिना खिड़की प्रदर्शित करता है धन्यवाद :) अब मुझे एक और समस्या का सामना करना पड़ रहा है, मैं इसे मारने के बिना खिड़की को मार नहीं सकता। DestroyWindow() काम नहीं लग रहा है। – Xolve

+4

एक विंडो को नष्ट करने के बाद आपको ईवेंट पंप करने की आवश्यकता होगी। DestroyWindow ('display') पर कॉल करने के तुरंत बाद, WaitKey (1) जोड़ें। इससे इसे मिलीसेकंद की प्रतीक्षा करनी पड़ेगी, जो पर्याप्त नहीं है, और खिड़की से छुटकारा पाएं। – susmits

+0

यह काम करता है, धन्यवाद :) मैं इंगित करता हूं कि ओपनसीवी की गुई कार्यक्षमता इतनी अच्छी नहीं है। अक्सर छवि को अस्थायी फ़ाइल में सहेजने और बाहरी दर्शक में छवि को खोलने के लिए बेहतर होता है। – Xolve

0

इस जानकारी के अतिरिक्त: WaitKey (1) 1ms के लिए इंतजार नहीं करता है, लेकिन कम से कम 15ms के लिए ... यदि आप चाहें तो माप सकते हैं।

+1

विशेष रूप से, यह निर्भर करेगा मंच के लिए मंच। उदाहरण के लिए, विंडोज़ पर, संदेश लूप के एक पंप को करने के लिए जितना समय लगता है उससे कम समय तक प्रतीक्षा करना संभव नहीं है। – susmits