如何在 VTK 管道 (Python) 中使用 VTK_array?
How to use VTK_array in VTK pipeline (Python)?
我是 vtk
的新手,正在尝试使用 DICOM 文件进行体绘制。
当我尝试使用 VTK 读取 DICOM 文件时,代码如下:
import vtk
reader = vtk.vtkDICOMImageReader()
reader.SetDirectoryName(r"C:\Users\I_0001")
reader.Update()
我收到以下错误:
ERROR: In ..\IO\Image\vtkDICOMImageReader.cxx, line 143
vtkDICOMImageReader (000001DC61D2FED0): Couldn't open C:\Users\I_0001
ERROR: In ..\IO\Image\vtkDICOMImageReader.cxx, line 237
vtkDICOMImageReader (000001DC61D2FED0): Either a filename was not specified or the specified directory does not contain any DICOM images.
ERROR: In ..\Common\ExecutionModel\vtkExecutive.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 数组。但是后来我不知道如何将这些图像插入到使用 reader.GetOutputPort() 启动管道的 vtk 管道中。 有人可以帮我将 VTK 数组的 DICOM 文件图像插入 VTK 管道吗?
这是我当前的代码:
# reading the data and converting it to VTK array using numpy_support
fileVolume = r"C:\Users\I_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:\Users\I_0001")
reader.Update()
mapper = vtk.vtkDataSetMapper()
mapper.SetInputData(reader.GetOutput())
使用@Nico Vuaille 链接的 VTKWithNumpy example 我能够将我的 numpy 数组转换为 VTK 图像对象。
我是 vtk
的新手,正在尝试使用 DICOM 文件进行体绘制。
当我尝试使用 VTK 读取 DICOM 文件时,代码如下:
import vtk
reader = vtk.vtkDICOMImageReader()
reader.SetDirectoryName(r"C:\Users\I_0001")
reader.Update()
我收到以下错误:
ERROR: In ..\IO\Image\vtkDICOMImageReader.cxx, line 143
vtkDICOMImageReader (000001DC61D2FED0): Couldn't open C:\Users\I_0001
ERROR: In ..\IO\Image\vtkDICOMImageReader.cxx, line 237
vtkDICOMImageReader (000001DC61D2FED0): Either a filename was not specified or the specified directory does not contain any DICOM images.
ERROR: In ..\Common\ExecutionModel\vtkExecutive.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 数组。但是后来我不知道如何将这些图像插入到使用 reader.GetOutputPort() 启动管道的 vtk 管道中。 有人可以帮我将 VTK 数组的 DICOM 文件图像插入 VTK 管道吗?
这是我当前的代码:
# reading the data and converting it to VTK array using numpy_support
fileVolume = r"C:\Users\I_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:\Users\I_0001")
reader.Update()
mapper = vtk.vtkDataSetMapper()
mapper.SetInputData(reader.GetOutput())
使用@Nico Vuaille 链接的 VTKWithNumpy example 我能够将我的 numpy 数组转换为 VTK 图像对象。