在openCV中显示的图像之间暂停

2024-04-27 18:53:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想展示几张图片,中间停顿一下。 我试过使用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)

有什么建议吗?

提前谢谢


Tags: 用户imageimportnumpyimgasnp图片
3条回答

^{}添加值将使其暂停给定的毫秒数。您可以使用^{}循环浏览图像列表。

此脚本将暂停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

在您发布的代码中,将显示image1.jpg,并等待用户按任何键,因为您已经使用了^{}0表示程序将等待用户点击一个键。您可以添加在显示第二个图像代替0之前要等待的毫秒数。一旦按下一个键,image2.jpg将被读取,但不会显示,因为在第二个imshow之后没有waitKey,程序将退出。

您可以尝试以下代码。这段代码假设您的“多个图像”位于一个文件夹中,它显示一个图像,暂停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

waitkey()调用中,number是要等待的毫秒数。

相关问题 更多 >