Python 批量将数据保存到图像:需要加速
我需要将大量(比如一百万)图像保存到磁盘,从数据开始。 我可以使用Python 批量将数据保存到图像:需要加速,python,numpy,matplotlib,Python,Numpy,Matplotlib,我需要将大量(比如一百万)图像保存到磁盘,从数据开始。 我可以使用matplotlib实现这一点,但过程很慢。 我分析了我的脚本,发现瓶颈是以下几行: ax=plt.轴(图[0,0,1,1]) 图clf() 我的数据在一个numpy.array形状为56 x 56的数组中 代码如下: import matplotlib as mpl mpl.use('Agg') import numpy as np import matplotlib.pyplot as plt for i in rang
matplotlib
实现这一点,但过程很慢。
我分析了我的脚本,发现瓶颈是以下几行:
ax=plt.轴(图[0,0,1,1])
图clf()
numpy.array
形状为56 x 56的数组中
代码如下:
import matplotlib as mpl
mpl.use('Agg')
import numpy as np
import matplotlib.pyplot as plt
for i in range(num_events):
image = create_camera_image(evts, i) # this gives me back the image in a numpy.array of shape 56 x 56
fig = plt.figure(frameon=False)
fig.set_size_inches(1, 1)
ax = plt.Axes(fig, [0., 0., 1., 1.]) # most expensive line
ax.set_axis_off()
fig.add_axes(ax)
ax.imshow(image, filternorm=90, interpolation='nearest', origin='lower', cmap='hot')
fig.savefig('filename'+str(i)+'.png', dpi=224)
fig.clf() # second most expensive line
有没有更有效的方法?
我相信matplotlib并不是最好的选择,但我不能使用其他库,如
pillow
或opencv
来实现相同的结果。一次创建图形、轴和图像,并且只使用新数据更新,而不是为每个图像创建它们,肯定会更有效
import matplotlib as mpl
mpl.use('Agg')
import numpy as np
import matplotlib.pyplot as plt
num_events = 10
def create_camera_image(i):
return np.random.rand(56,56)
fig = plt.figure(figsize=(1,1),frameon=False)
ax = fig.add_axes([0,0,1,1])
ax.set_axis_off()
nullimage = np.zeros((56,56))
im = ax.imshow(nullimage, interpolation='nearest', origin='lower',
cmap='hot', vmin=0,vmax=1)
for i in range(num_events):
image = create_camera_image(i)
im.set_data(image)
fig.savefig('filename'+str(i)+'.png', dpi=224)
它似乎不起作用。我只能以这种方式生成黑色图像,就好像
null图像
不会被set\u data
很好地替换一样。此外,我有以前没有的围绕相机图像的白色区域。如果你复制粘贴上面的代码并运行它,你会得到黑色图像吗?这对我来说很好,你的代码也很好。我想问题出在数据上,因为你的create\u camera\u image
返回一个(56,56,3)数组,而我的是一个(56,56)。我会接受你的答复。我正在调查。如果你有一个灰度图像,你需要标准化imshowplot。我更新了答案,使用了灰度图像。这是我从原始版本获得的图像:这是我现在得到的:非常好(不是相同的数据,但不相关),但正如你所看到的,我现在没有相机轮廓,也没有背景色。。