将VTK渲染窗口图像转换为numpy数组
在VTK中,我可以使用下面的代码片段将渲染窗口保存为一张图片。不过,我其实想直接得到一个numpy数组(也就是不想先写成文件再读取)。
im = vtkWindowToImageFilter()
writer = vtkPNGWriter()
im.SetInput(renderWindow)
im.Update()
writer.SetInputConnection(im.GetOutputPort())
writer.SetFileName("file.png")
writer.Write()
有什么好的方法可以做到这一点呢?
1 个回答
14
我觉得没必要使用 vtkXWriter
(这里的 X
是某种格式),除非你真的需要把数据转换成 X
这种格式。首先,你要定义好你想要导出内容的窗口,然后就可以获取一个 VTK 图像,并对它进行处理。
from vtk.util.numpy_support import vtk_to_numpy
...
vtk_rw = vtk.vtkRenderWindow()
...
vtk_win_im = vtk.vtkWindowToImageFilter()
vtk_win_im.SetInput(vtk_rw)
vtk_win_im.Update()
vtk_image = vtk_win_im.GetOutput()
width, height, _ = vtk_image.GetDimensions()
vtk_array = vtk_image.GetPointData().GetScalars()
components = vtk_array.GetNumberOfComponents()
arr = vtk_to_numpy(vtk_array).reshape(height, width, components)
...