【问题标题】:how to display 2 images one after the another in sequence in same window using OpenCV?如何使用 OpenCV 在同一窗口中依次显示 2 张图像?
【发布时间】:2020-03-11 19:38:45
【问题描述】:

我在 python 中使用 OpenCV,代码的目的是在同一个窗口中显示一个接一个的图像而不破坏它。例如。 i1.jpg 显示,然后在同一窗口中,在停顿 5 秒后显示左箭头。 在我的情况下,显示 i1.jpg 然后窗口被销毁,然后 i2.jpg 显示在另一个窗口中。

这是相同的代码 -

t_screen_time = 5000

import numpy
import cv2

left_arrow = "left_arrow.jpg"
right_arrow = "right_arrow.jpg"

img = cv2.imread(left_arrow)
cv2.imshow('image',img)
cv2.waitKey(t_screen_time)
cv2.destroyAllWindows()

img = cv2.imread(right_arrow)
cv2.imshow('image',img)
cv2.waitKey(t_screen_time)
cv2.destroyAllWindows()

【问题讨论】:

  • 看看你能不能找出哪个调用正在破坏显示两个图像之间的窗口...

标签: python image opencv


【解决方案1】:

cv2.waitKey() 中的参数是等待按键的时间,而不是显示图像的确切时间。

cv::imshow()cv2.imshow() 并非设计为完整的 GUI。它旨在让您快速调试和显示图像/视频。

您可以在一个线程中使用某种形式的sleep() 来实现您所需要的。但这在python中更难做到。您也可以将代码编辑为

t_screen_time = 5000

import numpy 
import cv2

left_arrow = r"first/image" 
right_arrow = r"second/image"

img = cv2.imread(left_arrow) 
cv2.imshow('image',img)
cv2.waitKey(t_screen_time) 

img = cv2.imread(right_arrow) 
cv2.imshow('image',img) 
cv2.waitKey(t_screen_time) 
cv2.destroyAllWindows()

在显示第二张图片之前删除cv2.destroyAllWindows()。我已经测试了这段代码,它可以工作,但如果你正在寻找更多的 GUI 功能,请使用 Qt 之类的东西。

【讨论】:

  • 这将在新窗口中显示下一张图片,而不是在同一个窗口中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 1970-01-01
  • 2011-07-02
  • 2022-06-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多