0

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

代码 => vtkGdmReader示例

错误 C2039:“SetInput”:不是“vtkTexture”的成员

错误 C2039:“SetInput”:不是“vtkPolyDataMapper”的成员

请谁能告诉我为什么我会遇到这个问题,这个错误与 vtk 版本有关吗?如果是这样,那我该怎么办?

请帮我解决问题..

4

1 回答 1

1

正如评论中所说,此错误与VTK版本有关。SetInput()在 VTK 6 中被删除

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

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

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

我建议查看 VTK Wiki 的VTK 6 迁移页面(和指南)以获取有关此错误和您可能遇到的其他错误的更多信息。

于 2015-06-18T18:23:51.810 回答