阅读DICOM图像

时间:2013-08-29 12:45:45

标签: vtk dicom imaging itk

我试图在不使用imageviewer的情况下阅读dicom图像,我遇到了VtkGdmReader ..当我试图执行它时,它给了我一个错误:

code => vtkGdmReader示例

错误C2039:'SetInput':不是'vtkTexture'的成员

错误C2039:'SetInput':不是'vtkPolyDataMapper'的成员

请任何人告诉我为什么我面临这个问题,这个错误是否与vtk版本有关?如果是的话那我该怎么办呢?

请帮我解决问题..

1 个答案:

答案 0 :(得分:1)

如评论中所述,此错误与VTK版本有关。 SetInput() was removed in VTK 6

您可以使用VTK 5或更新代码。如果您决定对其进行更新,则可以通过将SetInput()替换为SetInputData()SetInputConnection()并进行一些修改来解决此错误。如果希望过滤器通过管道,则应使用SetInputConnection()

作为修复您提到的错误的示例,您应该在您提供的代码中替换以下行:
VTKtexture->SetInput(ima);
VTKplaneMapper->SetInput(VTKplane->GetOutput());
于:
VTKtexture->SetInputConnection(reader->GetOutputPort());
VTKplaneMapper->SetInputConnection(VTKplane->GetOutputPort());

在第二个修改(VTKplaneMapper)中,请注意我们刚刚将GetOutput()更改为GetOutputPort(),而在第一个修改(VTKtexture)中我们完全更改了传递的参数到SetInputConnection()。之所以发生这种情况,是因为数据对象(例如ima)不再依赖于管道对象(例如算法和管理人员)。在这种情况下,我们将生成该数据对象的算法作为参数 - 如果您查找它,您可以看到行vtkImageData* ima = reader->GetOutput();,您只需要将GetOutput()替换为GetOutputPort()正如我们在第二次修改中所做的那样。

我建议您查看VTK Wiki的VTK 6 Migration pages(和guide),了解有关此错误以及您可能遇到的其他错误的更多信息。