【问题标题】:Read DICOM images读取 DICOM 图像
【发布时间】:2013-08-29 12:45:44
【问题描述】:

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

代码 => vtkGdmReader 示例

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

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

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

请帮我解决问题..

【问题讨论】:

  • 我相信 SetInput 在 VTK-6 中已被删除。 vtk.org/Wiki/VTK/VTK_6_Migration/Replacement_of_SetInput
  • @user2268891:我认为drescherjm 是对的。我正在使用 VTK 5.10.1,我可以毫无问题地使用 vtkPolyDataMapper->SetInput() (我的 Intellisense 也可以自己识别它)。可能,您应该恢复到 VTK 5.x.x 以使该示例按原样工作。

标签: vtk dicom imaging itk


【解决方案1】:

如cmets中所说,此错误与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)以获取有关此错误和您可能遇到的其他错误的更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多