首页 > 解决方案 > vtkImageAppend 似乎没有产生有效的 vtkImageData

问题描述

我有几个 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 做类似的事情,或者有没有人建议用另一种方法来完成这个?

标签: pythonvtkmedical-imaging

解决方案


推荐阅读