我想展示几张图片,暂停一下。 我已经尝试使用waitKey,等待用户按ESC,但它似乎没有工作。
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)
有什么建议吗?
提前致谢
答案 0 :(得分:6)
在您发布的代码中,显示image1.jpg
并等待用户按任意键,因为您已使用waitKey(0)
。 0
表示程序将等到用户点击密钥。您可以在显示第二个图像之前添加要等待的毫秒数,而不是0
。按下某个键后,image2.jpg
会被读取但不会显示,因为在第二个waitKey
之后您没有imshow
并且该程序将退出。
您可以尝试以下代码。此代码假定您的“多个图像”位于文件夹中并显示图像,暂停3秒钟并显示下一个图像。
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
答案 1 :(得分:1)
在waitkey()
调用中,数字是等待的毫秒数。
答案 2 :(得分:1)
向waitkey()
添加值将使其暂停给定的毫秒数。您可以使用itertools.cycle()
循环浏览图像列表。
此脚本将暂停5秒钟,然后显示下一张图像。如果按下逃生则退出。
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
答案 3 :(得分:0)
您可以在python中使用glob模块来选择所有文件
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