我正在开发一些计算机视觉算法,想展示numpy数组在每个步骤中如何变化。
现在可以通过在代码末尾简单使用imshow( array )
来显示窗口并展示最终图像。
但是我想要的是,在每次迭代中更新和显示imshow窗口以显示图像的变化。
例如,我想要做到:
import numpy as np
import matplotlib.pyplot as plt
import time
array = np.zeros( (100, 100), np.uint8 )
for i in xrange( 0, 100 ):
for j in xrange( 0, 50 ):
array[j, i] = 1
#_show_updated_window_briefly_
plt.imshow( array )
time.sleep(0.1)
问题在于采用这种方式后,Matplotlib窗口不会被激活,直到整个计算过程完成为止。
我尝试了原生的Matplotlib和pyplot,但结果是一样的。对于绘图命令,我找到了一个.ion()
开关,但它似乎在这里不起作用。
问题1:持续显示对numpy数组(实际上是uint8灰度图像)的更新的最佳方法是什么?
问题2:是否可能使用动画函数来实现此功能,就像动态图像示例中所示?我想在循环内调用一个函数,因此我不知道如何使用动画函数实现这一点。
show()
或draw()
-- 参见此答案。 - Bonlenfum