Как я могу конвертировать из vtkImageData (соответствующий RGB-изображению) в numpy? - PullRequest
0 голосов
/ 07 января 2020

Я хочу преобразовать 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)

1 Ответ

0 голосов
/ 08 января 2020

Если изображение имеет 3 компонента на пиксель (вероятно, RGB), то это действительно 4-мерный массив с точки зрения numpy. Так что, возможно, это должно быть:

numpy_data = temp.reshape(dims[2], dims[1], dims[0], 3)
...