我正在尝试使用 imshow 在 while 循环中显示图像(一个 N*P numpy 数组),但它似乎不起作用。
当我只使用没有缩进的“plt.imshow(image,cmap='gray')”时,它工作得很好。
但是,当我尝试从 while 循环中使用它时
continue=True
while continue:
plt.imshow(image,cmap='gray')
continue=input()
或者
i=0
while i<10:
plt.imshow(image,cmap='gray')
i+=1
pyplot 窗口只是冻结和 python 崩溃(与 if 相同的问题)。
我不明白为什么会这样,这里有人知道吗?非常感谢提前:)
编辑:我尝试在我的程序中这样使用它
import matplotlib.pyplot as plt
import numpy as np
import PIL.Image as im
image=np.array(im.open("Blabla.jpg").convert('L')).astype(np.float32)
plt.imshow(image,cmap='gray') #This works -> ONLY when there is not a while after
keepGoin = True #But this doesn't
while keepGoin:
plt.imshow(image,cmap='gray')
keepGoin=input()
编辑 2:
我犯了一个错误:似乎在使用 while//if 时 imshow 会暂停,即使 while 循环就在 imshow 之后。而当 while 循环结束时,最终会显示一个图像。也许使用这种循环只是暂停进程?
所以我尝试使用辅助函数来显示图像“out”,但它也不起作用,结果是一样的:pyplot 窗口在 while 循环期间冻结,并且图像在之后立即显示循环结束。
编辑 3:
因此,经过多次尝试,我很确定问题不是在一段时间内调用 imshow,而是循环暂停了 pyplot 的执行,即使它在循环之前被调用(如果我调用 imshow 然后使用循环, pyplot 窗口冻结直到循环结束)
根据我所做的一些新研究, plt.pause 可以帮助我,但是当我尝试这个时出现错误。