Python - matplotlib.pyplot.imshow无法在if // while中工作

2024-10-01 11:30:56 发布

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

我试图用imshow在while循环中显示一个图像(一个N*pnumpy数组),但似乎不起作用。在

当我使用plt.imshow公司(image,cmap='gray')”没有缩进,效果非常好。在

但是,当我试图从while循环中使用它时

continue=True
while continue:
    plt.imshow(image,cmap='gray')
    continue=input()

或者

^{pr2}$

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:

我犯了一个错误:imshow似乎在使用while//if时暂停,即使while循环正好在imshow之后。当while循环结束时,最终会显示一个图像。也许使用这种循环只是暂停了这个过程?在

所以我尝试使用一个二次函数来显示while之外的图像,但是它也不起作用,结果是一样的:pyplot窗口在while循环期间冻结,并且图像在循环结束后立即显示。在

编辑3:

因此,在多次尝试之后,我很确定问题不是暂时调用imshow,而是循环会暂停pyplot的执行,即使它是在循环之前调用的(如果我调用imshow然后使用循环,pyplot窗口会冻结直到循环结束)

根据我做的一些新研究,暂停我可以帮我,但我试这个时有个错误。在


Tags: 图像imageimporttrue编辑asnpplt
1条回答
网友
1楼 · 发布于 2024-10-01 11:30:56

以下是一些可能有助于调试的观察结果。下面的代码和语句只适用于Python 2.x。在

使用下面的代码,您必须在启动程序的控制台上输入单词True或{},这样它才不会在第一次显示之后崩溃,因为input()需要某种输入,如果您不给它任何东西,就会抛出EOF。在

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.ion()
plt.imshow(image,cmap='gray')

keepGoin = True #But this doesn't
while keepGoin:
    plt.imshow(image,cmap='gray')
    keepGoin=input()

如果将其更改为raw_input,则它不会与EOF崩溃,但仍将终止,除非您给它一些输入。但是,将循环更改为独立于输入的循环为我暂停了它,直到我在终端上按下Enter。在

^{pr2}$

相关问题 更多 >