web-dev-qa-db-fra.com

Comment afficher une image en utilisant cv2 dans Python

J'ai travaillé avec du code pour afficher les images d'un film. Les os nus du code sont les suivants:

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()

Parce que je peux afficher l'image en utilisant matplotlib, je sais que je la lis avec succès.

Je ne comprends pas pourquoi ma création d'une fenêtre et la tentative d'afficher une image à l'aide de cv2 ne fonctionnent pas. Aucune fenêtre cv2 n'apparaît jamais. Curieusement cependant, si je crée une deuxième fenêtre cv2, la fenêtre "entrée" apparaît, mais ce n'est qu'une fenêtre vierge/blanche.

Qu'est-ce que j'oublie ici?

18
user1245262

Pour autant que je puisse voir, vous le faites presque bien. Il manque une chose:

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

Donc, probablement, votre fenêtre apparaît mais se ferme très très rapidement.

41
phev8