【发布时间】:2013-07-24 00:07:28
【问题描述】:
我正在研究一些计算机视觉算法,我想展示一个 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() 开关,但在这里它似乎不起作用。
第一季度。持续显示对 numpy 数组(实际上是 uint8 灰度图像)的更新的最佳方式是什么?
第二季度。是否可以使用动画功能来做到这一点,比如dynamic image example?我想在循环中调用一个函数,因此我不知道如何使用动画函数来实现。
【问题讨论】:
-
这可能取决于您使用的后端,但请在开始循环之前尝试至少调用一个
show()或draw()-- 请参阅此answer。
标签: python numpy matplotlib spyder