Hoe kan men een afbeelding weergeven met cv2 in Python

Ik heb met code gewerkt om frames uit een film weer te geven. De kern van de code is als volgt:

import cv2
import matplotlib.pyplot as plt
# Read single frame avi
cap = cv2.VideoCapture('singleFrame.avi')
rval, frame = cap.read()
# Attempt to display using cv2 (doesn't work)
cv2.namedWindow("Input")
cv2.imshow("Input", frame)
#Display image using matplotlib (Works)
b,g,r = cv2.split(frame)
frame_rgb = cv2.merge((r,g,b))
plt.imshow(frame_rgb)
plt.title('Matplotlib') #Give this plot a title, 
                        #so I know it's from matplotlib and not cv2
plt.show()

Omdat ik de afbeelding kan weergeven met matplotlib, weet ik dat ik deze met succes inlees.

Ik begrijp niet waarom mijn creatie van een venster en poging om een afbeelding te tonen met cv2 niet werkt. Er verschijnt nooit een cv2-venster. Vreemd genoeg, als ik een tweede cv2-venster maak, verschijnt het ‘invoer’-venster, maar het is slechts een leeg/wit venster.

Wat mis ik hier?


Antwoord 1, autoriteit 100%

Voor zover ik kan zien, doe je het bijna goed. Er ontbreekt één ding:

cv2.imshow('image',img)
cv2.waitKey(0)

Dus waarschijnlijk verschijnt je venster, maar wordt het heel erg snel gesloten.


Antwoord 2

Tijdens het gebruik van Jupyter Notebook kan dit van pas komen

import cv2
import matplotlib.pyplot as plt
# reading image
image = cv2.imread("Path of image here")
# displaying image
plt.imshow("Image",image)
cv2.waitKey(0)
plt.show()

Antwoord 3

u kunt de volgende code volgen

import cv2
# read image 
image = cv2.imread('path to your image')
# show the image, provide window name first
cv2.imshow('image window', image)
# add wait key. window waits until user presses a key
cv2.waitKey(0)
# and finally destroy/close all open windows
cv2.destroyAllWindows()

Ik denk dat uw taak dan is gedaan

Other episodes