VTK отображает изображение окна в массив numpy

В VTK я могу использовать следующий фрагмент, чтобы сохранить окно рендеринга в качестве изображения. Тем не менее, на самом деле я хочу получить его непосредственно в виде массива numpy (без записи и чтения).

im = vtkWindowToImageFilter()
writer = vtkPNGWriter()
im.SetInput(renderWindow)
im.Update()
writer.SetInputConnection(im.GetOutputPort())
writer.SetFileName("file.png")
writer.Write()

Каков наилучший способ сделать это?

Ответ 1

Я считаю, что нет необходимости включать 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)

...