Je voudrais montrer plusieurs images, en faisant une pause entre ..__ J'ai essayé avec waitKey, attendant que l'utilisateur appuie sur ESC, mais cela ne semble pas fonctionner.
import numpy as np
import cv2
img = cv2.imread('image1.jpg',0)
cv2.imshow('image',img)
# here it should be the pause
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exit
cv2.destroyAllWindows()
img = cv2.imread('image2.jpg',0)
cv2.imshow('image',img)
Toute suggestion?
Merci d'avance
image1.jpg
s'affiche et attend que l'utilisateur appuie sur une touche quelconque depuis que vous avez utilisé waitKey(0)
. Le 0
indique que le programme attendra qu'un utilisateur appuie sur une touche. Vous pouvez ajouter le nombre de millisecondes à attendre avant que la seconde image ne s'affiche à la place du 0
. Une fois que vous avez appuyé sur une touche, image2.jpg
est lu mais ne s'affiche pas car vous n'avez pas de waitKey
après la seconde imshow
et le programme se ferme.
Vous pouvez essayer le code suivant. Ce code suppose que vos "plusieurs images" se trouvent dans un dossier. Il affiche une image, met en pause pendant 3 secondes et affiche la suivante.
import cv2
import os
folder_path = ''#folder path to your images
for path in os.listdir(folder_path):#loop to read one image at a time
imgpath = os.path.join(folder_path, path)
frame = cv2.imread(imgpath, 1)
cv2.imshow('Window', frame)
key = cv2.waitKey(3000)#pauses for 3 seconds before fetching next image
if key == 27:#if ESC is pressed, exit loop
cv2.destroyAllWindows()
break
Dans l'appel waitkey()
, le nombre correspond au nombre de millisecondes à attendre.
Ajouter une valeur à waitkey()
le mettra en pause pour le nombre de millisecondes donné. Vous pouvez utiliser itertools.cycle()
pour parcourir une liste d'images.
Ce script fera une pause de 5 secondes, puis affichera l'image suivante. Si vous appuyez sur échappement, il sort.
from itertools import cycle
import cv2
for image_filename in cycle(['image1.jpg', 'image2.jpg']):
image = cv2.imread(image_filename, 0)
cv2.imshow('image', image)
# Pause here 5 seconds.
k = cv2.waitKey(5000)
if k == 27: # If escape was pressed exit
cv2.destroyAllWindows()
break
Vous pouvez utiliser le module glob en python pour sélectionner tous les fichiers
import cv2
import glob # get all files in the directory
images = glob.glob("path_to_files/*.jpg") #get all files with given extension
for img in range(len(images)):
current_image = cv2.imread(images[img], 1) #cv2.imread(images[i], 0) # for image in grayscale
cv2.imshow('Display Images', current_image)
key = cv2.waitKey(300) #change to your own waiting time 1000 = 1 second
if key == 27: #if ESC is pressed, exit
cv2.destroyAllWindows()
break