我有几个 DICOM 堆栈用于一只手的不同骨骼,我想 3-D 渲染整个手。到目前为止,我只能得到一个骨头来渲染。
我正在使用 python vtk 和 vtkplotter 库。
到目前为止,我已经尝试为每个 DICOM 图像创建一个 vtkImageData 对象,并使用 vtkImageAppend.AddInputData() 将它们全部输入到 vtkImageAppend 对象中。
代码是我用来附加所有图像的函数,这些图像作为名为 vtkList 的列表传递给函数。
def CombineVTKs(vtkList):
"Returns a Single VTKImageData given a list of individual ones"
a = vtk.vtkImageAppend()
a.SetAppendAxis(2)
for l in vtkList:
a.AddInputData(l)
return a.GetOutput()
CombineVTKs() 函数的输出是一个 '(vtkCommonDataModelPython.vtkImageData)' 对象,但是当我尝试创建一个 vtkplotter.Volume() 对象并显示它时,一切都中断了,让我非常难过。这是代码和以下错误:
a = CombineVTKs(myVtkList)
vol = vtkplotter.Volume(a)
vtkplotter.show(vol, bg='white')
产生的错误是:
ERROR: In C:\VPP\standalone-build\VTK-
source\Rendering\Volume\vtkGPUVolumeRayCastMapper.cxx, line 336
vtkOpenGLGPUVolumeRayCastMapper (000002B3516FA9C0): No scalars named ""
or with id -1 found on input.
ERROR: In C:\VPP\standalone-build\VTK-
source\Rendering\Volume\vtkGPUVolumeRayCastMapper.cxx, line 336
vtkOpenGLGPUVolumeRayCastMapper (000002B3516FA9C0): No scalars named ""
or with id -1 found on input.
有没有人用过vtk &&/|| vtkplotter 做类似的事情,或者有没有人建议用另一种方法来完成这个?