cv2.imshow कमांड opencv-python में ठीक से काम नहीं करता है


111

मैं opencv 2.4.2 का उपयोग कर रहा हूं, अजगर 2.7 निम्नलिखित सरल कोड ने सही नाम की एक विंडो बनाई है, लेकिन इसकी सामग्री सिर्फ रिक्त है और छवि नहीं दिखाती है:

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)

किसी को भी इस मुद्दे के बारे में पता है?


आपका फ़ाइल पथ गलत हो सकता है। Windows \ / / का उपयोग करता है। मुझे यकीन नहीं है कि OpenCV विंडोज पर / बर्दाश्त करता है? यदि फिक्सिंग से मदद नहीं मिलती है, तो सुनिश्चित करें कि आपकी छवि सही स्थान पर है और एक वैध छवि है।
fmw42

जवाबों:


228

imshow()केवल साथ काम करता है waitKey():

import cv2
img = cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow', img)
cv2.waitKey()

(विंडो को अपडेट करने के लिए आवश्यक संपूर्ण संदेश-लूप वहां छिपा हुआ है।)


3
चेक print imgएक सही संख्यात्मक सरणी प्रिंट करता है, एक NoneTypeवस्तु नहीं ।
आबिद रहमान के

7
बस सामान्य स्थिति के तहत, पोस्टीरिटी के लिए स्पष्ट होना, यह सही उत्तर होगा। वेटकी को स्वीकार करने से (आमतौर पर) प्रश्न में वर्णित व्यवहार का परिणाम होगा।
Snesticle

45

मुझे यहाँ मेरे लिए काम करने वाला उत्तर मिला: http://txt.arboreus.com/2012/07/11/highgui-opencv-window-from-ipython.html

यदि आप एक इंटरैक्टिव ipython सत्र चलाते हैं, और highgui विंडोज़ का उपयोग करना चाहते हैं, तो पहले cv2.startWindowThread () करें।

विस्तार से: HighGUI OpenCV कोड से चित्र और वीडियो प्रदर्शित करने के लिए एक सरलीकृत इंटरफ़ेस है। यह उतना आसान होना चाहिए:

import cv2
img = cv2.imread("image.jpg")
cv2.startWindowThread()
cv2.namedWindow("preview")
cv2.imshow("preview", img)

7
आप इसे बाद में cv2.destroyAllWindows ()
Zuza

हाईगुई के क्यूटी कार्यान्वयन के लिए, startWindowThread () कुछ भी नहीं करता है। github.com/opencv/opencv/blob/…
kusi

24

आप के cv2.waitKey(0)बाद उपयोग करना चाहिए cv2.imshow("window",img)। तभी काम होगा।

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)

मुझे लगता है कि आपको छवि प्रदर्शित करने के लिए अजगर आईडीई स्थापित करने की आवश्यकता हो सकती है और आपको कभी-कभी खिड़की की तलाश भी करनी चाहिए, यह कभी भी सामने प्रदर्शित नहीं करता है। Cv2.waitKey () में लघुकोष्ठक मुझे लगता है कि मिल्सकॉन्ड में है और यदि आपने खाली छोड़ दिया तो यह हमेशा के लिए छवि प्रदर्शित करेगा।
अहमद्याह

11

यदि आप पायथन कंसोल के अंदर चल रहे हैं, तो यह करें:

img = cv2.imread("yourimage.jpg")

cv2.imshow("img", img); cv2.waitKey(0); cv2.destroyAllWindows()

फिर यदि आप Enterछवि को दबाते हैं , तो यह छवि को सफलतापूर्वक बंद कर देगा और आप अन्य कमांड को चलाने के लिए आगे बढ़ सकते हैं।


7

मैंने उसी मुद्दे का सामना किया। मैंने आईडीएलई से एक छवि को पढ़ने की कोशिश की और इसका उपयोग करके प्रदर्शित करने की कोशिश की cv2.imshow(), लेकिन खिड़की pythonw.exeको बंद करने की कोशिश करते समय डिस्प्ले विंडो फ्रीज और शो का जवाब नहीं दे रही है।

नीचे दिया गया पोस्ट ऐसा क्यों हो रहा है, इसके लिए एक संभावित स्पष्टीकरण देता है

pythonw.exe जवाब नहीं दे रहा है

" मूल रूप से, IDLE से ऐसा न करें। एक स्क्रिप्ट लिखें और इसे शेल या स्क्रिप्ट से सीधे चलाएं यदि विंडोज़ में, इसे .pyw एक्सटेंशन के साथ नाम देकर और इसे डबल क्लिक करके। जाहिर तौर पर IDLE के अपने ईवेंट के बीच एक संघर्ष है। लूप और जीयूआई टूलकिट से वाले। "

जब मैंने imshow()एक स्क्रिप्ट में उपयोग किया और इसे सीधे IDLE पर चलाने के बजाय निष्पादित किया, तो यह काम किया।


कृपया लिंक पर दिए गए स्पष्टीकरण को जोड़ दें (एक न्यूनतम कम से कम) क्योंकि लिंक बासी जा सकते हैं ... धन्यवाद :)
achedeuzot

क्योंकि यह मेरे पास है, लेकिन यह समस्या है ... "यह मत करो" वह उत्तर नहीं है जिसकी मुझे तलाश है =)
एरिक


4

मेरे लिए WaitKey () 0 से अधिक की संख्या के साथ काम किया

    cv2.waitKey(1)

3

आपको इस धागे में सभी आवश्यक टुकड़े मिल गए हैं:

if cv2.waitKey(): cv2.destroyAllWindows()

IDLE में मेरे लिए ठीक काम करता है।


3

यदि आपने यह काम नहीं किया है, तो आप बेहतर तरीके से काम करेंगे

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
cv2.waitKey(0)

एक फ़ाइल में और इसे चलाएं।


1

waitKey(0)( अतिरिक्त कोड के लिए उत्तर) के बाद किसी भी अतिरिक्त तरीकों की जरूरत नहीं है

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('ImageWindow',img)
cv2.waitKey(0)

विंडो दिखाई देती है -> विंडो पर क्लिक करें और एंटर पर क्लिक करें। विंडो बंद हो जाएगी


0

यदि आप "cv2.waitKey (0)" का उपयोग करना चुनते हैं, तो सुनिश्चित करें कि आपने "cv2.waitKey (0)" के स्थान पर "cv2.waitkey (0)" लिखा है, क्योंकि वह "k" आपके प्रोग्राम को भी फ्रीज कर सकता है। ।


3
एपीआई में लोअरकेस कुंजी के साथ विधि मौजूद नहीं है। विधि मौजूद नहीं होने के कारण कोड एक त्रुटि फेंक देगा।
रेयिन्गेंग

0

मुझे -215 त्रुटि भी हुई। मैंने सोचा था कि यह मुद्दा था, लेकिन जब मैंने गैर-मौजूद फ़ाइल में पढ़ने के लिए इम्रेड बदल दिया तो मुझे वहाँ कोई त्रुटि नहीं मिली। तो मैंने काम करने वाले फ़ोल्डर में छवि फ़ाइल डाल दी और cv2.waitKey (0) को जोड़ा और यह काम किया।


-1

त्रुटि: (-215) size. उपलब्धता> 0 && size.height> 0 फंक्शन imshow में

यह त्रुटि उत्पन्न होती है क्योंकि छवि नहीं मिली है। तो यह imshow फ़ंक्शन की त्रुटि नहीं है।


इस प्रश्न के लिए प्रासंगिक नहीं है।
रेयिन्गेंग

-1

मेरे पास एक ही 215 त्रुटि थी, जिसे मैं छवि के लिए पूर्ण पथ देकर दूर करने में सक्षम था, जैसे: C: \ Folder1 \ Folder2 \ filename.ext


क्या "वही 215 त्रुटि"? ओपी प्रश्न में कहीं भी किसी त्रुटि का उल्लेख नहीं है। इसके अलावा, ओपी छवि के लिए एक पूर्ण पथ का उपयोग कर रहा है, इसलिए मैं यह नहीं देखता कि यह प्रश्न का उत्तर कैसे देता है।
मैक्स वोल्मर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.