我是python中的新手,之前是MATLAB用户。如果我的问题很明显,我很抱歉。 我有一个巨大的47MB文件,包含3D阵列(351:467:300)。这是来自相机的300张图像。我想重新绘制它们作为一种动画。基本上,只需切片并绘制所有300张图像。这是我的代码
import numpy as np
import time
import matplotlib.pyplot as plt
import scipy.io as c
datafile = c.loadmat('data.mat') # loading data
img = datafile['img'] # extracting the (351:467:300) array
imgShape = np.shape(img)
for i in range(0,imgShape(2)):
plt.imshow(img[:,:,i])
time.sleep(0.3)
plt.draw()
print('Done!')
问题是:当谈到imshow时,数字窗口是黑色的并且没有响应直到它完成循环,所以我看不到任何东西。怎么解决这个?如何强制它“在线”更新?
与matlab相比,绘图是非常慢的(不是因为time.sleep :)我试过没有:))循环运行得非常慢。我正在使用Spyder,这是一个原因吗?
提前多多感谢!
答案 0 :(得分:0)
使用以下更正:
你需要让它互动。
import numpy as np
#import time
#import matplotlib.pyplot as plt
import scipy.io as c
import pylab as pl #added
datafile = c.loadmat('data.mat') # loading data
img = datafile['img'] # extracting the (351:467:300) array
imgShape = np.shape(img)
pl.ion() #added
for i in range(imgShape(2)): #no need for 0
pl.cla() #added
pl.imshow(img[:,:,i])
# time.sleep(0.3)
pl.draw()
pl.pause(0.3) #added
pl.ioff() #added
print('Done!')