【发布时间】:2019-01-30 18:15:42
【问题描述】:
我有一个生成系统,可以永远持续生成图像 - 它可能每隔一两秒生成一个新图像,但并不一致。
我想显示从系统输出的每个新图像,并且我想显示该图像,直到系统输出另一个图像,然后我将显示该图像。结果看起来像是生成的图像的连续流。
问题是 cv2 要求我输入“waitKey” - 这将等待数毫秒或直到按下某个键。如果我不包含“waitKey” - 图片一显示就会立即消失。
有什么方法可以让 cv2 在变量更新之前显示图像?
现在我的代码如下:
while True:
finalimage = generate_image() # this part takes a second, give or take.
cv2.imshow("window", finalimage)
cv2.waitKey(2000)
但这需要我为每张图像等待 2 秒……这可以加快速度。另外 - 如果生成图像需要超过 2 秒的时间,脚本会搞砸。
TLDR:有什么方法可以无限期地显示带有 cv2 的图像,直到变量被更新/更改 - 而无需暂停程序以等待键输入?
【问题讨论】:
-
您可以在单独的线程中更新finalimage,并让OpenCV imshow/waitkey 在主线程中运行,这样可以使您的界面保持响应并尽快显示图像。您可以放置一个 100 毫秒的等待键,以便在准备好时显示您的新图像
标签: opencv infinite-loop sleep keypress cv2