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

时间:2014-04-19 08:52:49

标签: python image loops imshow

我正在尝试使用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可以帮助我但是当我尝试这个时我出错了。

2 个答案:

答案 0 :(得分:0)

以下是一些可能有助于调试的观察结果。以下代码和声明仅适用于Python 2.x

使用下面的代码,您必须在启动程序的控制台上键入单词TrueFalse,因为它在第一次显示后不会崩溃,因为{{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控制台->图形->输出图形->此处:选择内联而不是自动