vtk_test.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import os
  2. import vtk
  3. from vtk.util import numpy_support
  4. from vtk.util.numpy_support import numpy_to_vtk, get_vtk_array_type
  5. import shutil
  6. def numpy_to_vti(array, origin, spacing, filename):
  7. """This function write a VtkImageData vti file from a numpy array.
  8. :param array: input array
  9. :type array: :class:`numpy.ndarray`
  10. :param origin: the origin of the array
  11. :type origin: array like object of values
  12. :param spacing: the step in each dimension
  13. :type spacing: array like object of values
  14. :param filename: output filename (.vti)
  15. :type filename: str
  16. """
  17. if array.ndim != 3:
  18. raise ValueError("Only works with 3 dimensional arrays")
  19. vtkArray = numpy_to_vtk(num_array=array.flatten('F'), deep=True,
  20. array_type=get_vtk_array_type(array.dtype))
  21. imageData = vtk.vtkImageData()
  22. imageData.SetOrigin(origin)
  23. imageData.SetSpacing(spacing)
  24. imageData.SetDimensions(array.shape)
  25. imageData.GetPointData().SetScalars(vtkArray)
  26. writer = vtk.vtkXMLImageDataWriter()
  27. writer.SetFileName(filename)
  28. writer.SetInputData(imageData)
  29. writer.Write()
  30. return ()