我是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图像对象。