gpt4 book ai didi

python - 在 MayaVi 中保存多个图像

转载 作者:行者123 更新时间:2023-12-04 11:19:58 27 4
gpt4 key购买 nike

我想渲染大约 500 张图像并将它们保存到不同的 png 文件中,因此我编写了一个包含我的数据集和渲染函数的小类

from mayavi import mlab
mlab.options.offscreen=True

class Dataset(object):
def __init__(self):
some init stuff etc

.
.
.
.

def save_current_frame_to_png(self, filename):
mlab.contour3d(self.frame_data, contours =30, opacity=0.2)
mlab.savefig(filename)
mlab.clf()
mlab.close()
gc.collect()

def create_movie_files(self):
folder_name = "animation"
try:
os.makedirs(folder_name)
except OSError:
raise OSError("Directory already exists.")

self.__go_to_first_frame()

for i in range(self.frames):
filename = "".join([folder_name, "/%.5i" % i, ".png"])
print filename
self.save_current_frame_to_png(filename)
self.read_single_frame()

self.__go_to_first_frame()

所以一切似乎都很好,但我看了看内存使用量上升
直到系统崩溃。所以我尝试使用 mlab.clf()gc.collect()为了保持我的内存力低,这是行不通的。我找到了一个解决方案 mlab.close()这似乎适用于内存使用,但这带来了一个新问题。
每次渲染新图像时,也会有一个由 Mayavi 创建的新窗口,所以在
大约 200 个窗口程序崩溃。也许有可能完全禁用 window ?在我看来 mlab.options.offscreen=True仅禁用在当前窗口内绘图。

编辑: self.frame_data是一个形状为 (100,100,100) 和 self.read_single_frame() 的 numpy 数组只需从文本文件中读取下一帧并将其存储在 self.frame_data 中.这个函数不会增加内存,如果我关闭渲染,内存使用率保持在 1.2%。

最佳答案

您应该在保留 mlab.close() 的同时隐藏 mlab.show()。那么它会起作用

关于python - 在 MayaVi 中保存多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24201190/

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