如何在VTK管道(Python)中使用VTK_array



我是vtk的新手,正在尝试使用DICOM文件进行体积渲染。

当我尝试使用VTK读取DICOM文件时,代码如下:

import vtk
reader = vtk.vtkDICOMImageReader()
reader.SetDirectoryName(r"C:UsersI_0001")
reader.Update()

我得到以下错误:

ERROR: In ..IOImagevtkDICOMImageReader.cxx, line 143
vtkDICOMImageReader (000001DC61D2FED0): Couldn't open C:UsersI_0001
ERROR: In ..IOImagevtkDICOMImageReader.cxx, line 237
vtkDICOMImageReader (000001DC61D2FED0): Either a filename was not specified or the specified directory does not contain any DICOM images.
ERROR: In ..CommonExecutionModelvtkExecutive.cxx, line 753
vtkCompositeDataPipeline (000001DC5C4A0A90): Algorithm vtkDICOMImageReader(000001DC61D2FED0) returned failure for request: vtkInformation (000001DC5F8E72A0)
Debug: Off
Modified Time: 207
Reference Count: 1
Registered Events: (none)
Request: REQUEST_DATA
FORWARD_DIRECTION: 0
ALGORITHM_AFTER_FORWARD: 1
FROM_OUTPUT_PORT: 0

我知道这个文件没有被破坏,因为当我尝试用pydicom读取它时,它是有效的。我尝试用pydicom将文件读取到numpy数组中,然后使用numpy_support.numpy_to_vtk转换为vtk数组。但我不知道如何将这些图像插入到使用阅读器的vtk管道中。GetOutputPort((以启动管道有人能帮我把作为VTK阵列的DICOM文件图像插入VTK管道吗

这是我当前的代码:

# reading the data and converting it to VTK array using numpy_support
fileVolume = r"C:UsersI_0001"
dicomVolume = pydicom.read_file(fileVolume)
shape = dicomVolume.pixel_array.shape
VTK_data = numpy_support.numpy_to_vtk(num_array=dicomVolume.pixel_array.ravel(), deep=True, array_type=vtk.VTK_FLOAT)

#need to insert VTK data here instead of using the vtk DICOM Image Reader
# Create the reader for the data.
reader = vtk.vtkDICOMImageReader()
reader.SetDirectoryName(r"C:UsersI_0001")
reader.Update()
mapper = vtk.vtkDataSetMapper()
mapper.SetInputData(reader.GetOutput())

使用@Nico Vuaille链接的VTKWithNumpy示例,我能够将numpy数组转换为VTK图像对象。

最新更新