Я хочу преобразовать vtkImageData (3 компонента) в numpy.
Для vtkImageData с 1 компонентом работает следующий код:
temp = vtk_to_numpy(data.GetPointData().GetScalars())
dims = data.GetDimensions()
numpy_data = temp.reshape(dims[2], dims[1], dims[0])
numpy_data = numpy_data.transpose(2,1,0)
Однако, когда количество компонентов равно 3, приведенный выше код дает неправильное изображение. Как это исправить?
Обновление:
Следующий код работает:
img_scalar = data.GetPointData().GetScalars()
dims = data.GetDimensions()
n_comp = img_scalar.GetNumberOfComponents()
temp = numpy_support.vtk_to_numpy(img_scalar)
numpy_data = temp.reshape(dims[1],dims[0],n_comp)
numpy_data = numpy_data.transpose(0,1,2)
numpy_data = np.flipud(numpy_data)