我正在尝试使用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:
我犯了一个错误:似乎imshow暂停了一段时间//如果被使用,即使while循环正好在imshow之后。当while循环结束时,最终显示图像。也许使用这种循环只是暂停过程?
所以我尝试使用辅助功能,旨在显示“out”的图像,但它也不起作用,结果是相同的:在while循环期间pyplot窗口冻结,并显示图像在循环结束后。
编辑3:
所以经过一些尝试之后,我很确定问题是暂时没有调用imshow,而是循环暂停pyplot的执行这一事实,即使它在循环之前被调用(如果我调用imshow然后使用一个循环,pyplot窗口冻结,直到循环结束)
根据我所做的一些新研究,plt.pause可以帮助我但是当我尝试这个时我出错了。
答案 0 :(得分:0)
以下是一些可能有助于调试的观察结果。以下代码和声明仅适用于Python 2.x
。
使用下面的代码,您必须在启动程序的控制台上键入单词True
或False
,因为它在第一次显示后不会崩溃,因为{{1如果您不提供任何内容,则需要某种输入并抛出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
答案 1 :(得分:0)
如果使用的是Spider,则更简单的方法是配置为在控制台中显示图像,因为在控制台中图像不会冻结。 要配置蜘蛛程序以在控制台上显示图像: 首选项-> python控制台->图形->输出图形->此处:选择内联而不是自动