cv2.imshow commando werkt niet goed in opencv-python

Ik gebruik opencv 2.4.2, python 2.7
De volgende eenvoudige code creëerde een venster met de juiste naam, maar de inhoud is gewoon leeg en laat de afbeelding niet zien:

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

weet iemand van dit probleem?


Antwoord 1, autoriteit 100%

imshow()werkt alleen met waitKey():

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

(De hele berichtenlus die nodig is om het venster bij te werken, is daarin verborgen.)


Antwoord 2, autoriteit 20%

Ik heb hier het antwoord gevonden dat voor mij werkte:
http://txt.arboreus.com/2012/07/11/ highgui-opencv-window-from-ipython.html

Als u een interactieve ipython-sessie uitvoert en highgui . wilt gebruiken
windows, voer dan eerst cv2.startWindowThread() uit.

In detail: HighGUI is een vereenvoudigde interface om afbeeldingen weer te geven en
video van OpenCV-code. Het zou zo eenvoudig moeten zijn als:

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

Antwoord 3, autoriteit 9%

U moet cv2.waitKey(0)gebruiken na cv2.imshow("window",img). Alleen dan zal het werken.

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

Antwoord 4, Autoriteit 7%

Als u in een Python-console gebruikt, doe dit dan:

img = cv2.imread("yourimage.jpg")
cv2.imshow("img", img); cv2.waitKey(0); cv2.destroyAllWindows()

Als u vervolgens op Druk op op de afbeelding, sluit deze met succes de afbeelding en u kunt doorgaan met het uitvoeren van andere opdrachten.


Antwoord 5, Autoriteit 3%

Ik geconfronteerd met hetzelfde probleem. Ik heb geprobeerd een afbeelding uit het hotel te lezen en probeerde het te tonen met cv2.imshow(), maar het display-venster bevriest en toont pythonw.exereageert niet wanneer u probeert Sluit het venster.

Het onderstaande bericht geeft een mogelijke verklaring voor waarom dit gebeurt

pythonw.exe reageert niet

"Kortom, doe dit niet vanuit niet-draaien. Schrijf een script en voer het uit de schaal of het script rechtstreeks als in Windows, door het met een .pyw-extensie te noemen en erop te klikken. Er is blijkbaar een conflict tussen de eigen evenementenlus van het idle en die van GUI Toolkits. "

Toen ik imshow()in een script gebruikte en voer deze uit in plaats van deze direct over het inactief te gaan, het werkte.


Antwoord 6, Autoriteit 3%

Toevoegen cv2.waitKey(0)aan het einde.


Antwoord 7, Autoriteit 2%

Methode 1:

De volgende code werkte voor mij.
Gewoon toevoegen van de DroyallWindows () sluit het venster niet. Het toevoegen van een andere CV2.Waitkey (1) aan het einde deed de taak.

im = cv2.imread("./input.jpg")
cv2.imshow("image", im)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey(1)

Credit: https://stackoverflow.com/a/50091712/8109630

Opmerking voor beginners:

  • Hiermee wordt de afbeelding in een apart venster geopend, in plaats van inline op de notebook weer te geven. Daarom moeten we de DroyallWindows () later gebruiken om het later te sluiten.
  • Dus als u geen apart venster ziet, controleert u of het zich achter uw huidige venster bevindt.
  • Nadat u de afbeelding hebt bekeken, drukt u op een toets om het pop-upvenster te sluiten.

Methode 2:

Als u wilt weergeven op de JUPYTER-notebook.

from matplotlib import pyplot as plt
import cv2
im = cv2.imread("./input.jpg")
color = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
plt.imshow(color)
plt.title('Image')
plt.show()

Antwoord 8, Autoriteit 2%

Voor mij Waskey () met nummer groter dan 0 gewerkt

   cv2.waitKey(1)

Antwoord 9

U hebt alle nodige stukken ergens in deze thread:

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

Werkt prima voor mij in niet-dames.


Antwoord 10

Als u dit werk niet hebt gedaan, kunt u beter

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

in één bestand en voer het uit.


Antwoord 11

Dit is hoe ik het heb opgelost:

import cv2
from matplotlib import pyplot
img = cv2.imread('path')
pyplot.imshow(img)
pyplot.show()

Antwoord 12

Heeft geen aanvullende methoden nodig na waitKey(0)(antwoord op bovenstaande code)

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

Venster verschijnt -> Klik op het venster & Klik op Enter. Venster zal sluiten.


Antwoord 13

Ik had ook een -215-fout. Ik dacht dat imshow het probleem was, maar toen ik imread veranderde in lezen in een niet-bestaand bestand, kreeg ik daar geen foutmelding. Dus ik plaatste het afbeeldingsbestand in de werkmap en voegde cv2.waitKey(0) toe en het werkte.


Antwoord 14

dit heeft het voor mij opgelost, import pyautogui


Antwoord 15

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

je kunt deze code proberen 🙂


Antwoord 16

Voor 64-bits systemen om fouten te voorkomen, gebruik dit einde cv2.waitKey(1) en voeg 0xFF toe.

voorbeeld:

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

Je kunt ook het volgende commando gebruiken voor meer controle door het programma te stoppen door op de Q-knop te drukken.

import cv2
img=cv2.imread('C:/Python27/03323_HD.jpg')
cv2.imshow('Window',img)
if cv2.waitKey(0) & 0xFF == ord('Q'):
    break
cv2.destroyAllwindows()

Antwoord 17

Als u ervoor kiest om "cv2.waitKey(0)" te gebruiken, zorg er dan voor dat u "cv2.waitKey(0)" hebt geschreven in plaats van "cv2.waitkey(0)", omdat de kleine letter "k" kan vastlopen ook uw programma.


Antwoord 18

fout: (-215) size.width>0 && size.height>0 in functie imshow

Deze fout wordt veroorzaakt omdat de afbeelding niet is gevonden. Het is dus geen fout van de imshow-functie.


Antwoord 19

Ik had dezelfde 215-fout, die ik kon oplossen door het volledige pad naar de afbeelding te geven, zoals in C:\Folder1\Folder2\filename.ext

Other episodes