我使用opencv为一个项目,显示一个图像,并在您关闭显示的图像后,相同的图像将打开以及一个新的附加图像。代码如下,但它只显示一个图像,而不是2。
import cv2
import time
import random
import os
k = 0
rep = 0
window_name = "Monkey Virus"
files = os.listdir("Z:Y10 Pythonimages wowimg")
delay = random.randint(0,10)
monkeyChoice = random.randint(1,len(files))
image = "Z:\Y10 Python\images wow\img\" + str(monkeyChoice) + ".jpg"
monkeyHist = 1
def draw_img():
global monkeyHist
if rep == 0:
time.sleep(delay)
monkeyHist += 1
img = cv2.imread(image, cv2.COLOR_BGR2RGB)
cv2.imshow(window_name, img)
cv2.setWindowProperty(window_name, cv2.WND_PROP_TOPMOST, 1)
cv2.waitKey(0)
draw_img()
rep = rep + 1
if cv2.getWindowProperty('Monkey Virus', cv2.WND_PROP_VISIBLE) < 1:
while k < monkeyHist:
draw_img()
在主线程上先调用cv2.imshow(...)
,然后调用cv2.waitKey(0)
。因此,在第一次调用之后,线程将被阻塞,并且在用户按下一个键之前不会执行进一步的代码。如果您想要显示第二个图像,您需要在调用cv2.waitKey(0)
之前使用不同的window_name参数再次调用cv2.imshow()
。
(也
while k < monkeyHist:
draw_img()
可能是一个无限循环,因为你的draw_img()
函数只增加monkeyHist,但从不增加k;因此,k永远小于monkeyHist。)