gpt4 book ai didi

python - 批量保存数据到图像: need speedup

转载 作者:太空宇宙 更新时间:2023-11-03 14:27:41 26 4
gpt4 key购买 nike

我需要将大量(例如一百万)图像保存到磁盘,从数据开始。我可以使用 matplotlib 来实现这一点,但过程很慢。我分析了我的脚本,发现瓶颈是以下几行:

  • ax = plt.Axes(fig, [0., 0., 1., 1.])
  • fig.clf()

我的数据存储在形状为 56 x 56 的 numpy.array 中。

代码如下:

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 不是最好的选择来做到这一点,但我不能使用其他库,例如 pillowopencv 来实现相同的目的结果。

最佳答案

创建图形、轴和图像一次并仅用新数据更新它,而不是为每个图像都创建它们,这肯定会更有效。

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)

关于python - 批量保存数据到图像: need speedup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47510617/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com