1

我有一个简单的文件,它应该通过使用 MetaImageReader 从 .mhd 文件中读取其标题来以 .raw 格式显示医学图像。我对 VTK 不太熟悉,所以我尝试了两个不同的代码片段(实际上它们是来自 vtk 和 kitware 网站的示例)。他们都没有工作。由于我是 VTK 新手,我不确定这是否是显示 3D 图像的正确方法,因为我的 .mhd 文件告诉我,图像具有 3 个维度:

void render1() {
// read input image
vtkSmartPointer<vtkMetaImageReader> reader = vtkSmartPointer<vtkMetaImageReader>::New();
reader->SetFileName("header.mhd");
reader->Update();

vtkSmartPointer<vtkImageViewer2> viewer = vtkSmartPointer<vtkImageViewer2>::New();
viewer->SetInputConnection(reader->GetOutputPort());

// render window
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();

viewer->SetupInteractor(renderWindowInteractor);
viewer->GetRenderer()->ResetCamera();

renderWindowInteractor->Initialize();
renderWindowInteractor->Start();
}

如果我将阅读器更改为 JPEGReader 并加载 JPEG 文件,则会显示图像。我试过的另一个例子如下:

void render2() {
// read input image
vtkSmartPointer<vtkMetaImageReader> reader = vtkSmartPointer<vtkMetaImageReader>::New();
reader->SetFileName("header.mhd");
reader->Update();

// Visualize
vtkSmartPointer<vtkImageActor> actor = vtkSmartPointer<vtkImageActor>::New();
actor->GetMapper()->SetInputConnection(reader->GetOutputPort());

vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);
renderer->ResetCamera();

vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);

vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
vtkSmartPointer<vtkInteractorStyleImage> style = vtkSmartPointer<vtkInteractorStyleImage>::New();

renderWindowInteractor->SetInteractorStyle(style);
renderWindowInteractor->SetRenderWindow(renderWindow);
renderWindowInteractor->Initialize();
renderWindowInteractor->Start();
}

我没有收到任何错误。只出现一个黑色背景的窗口。当我在窗口中单击并移动鼠标时,窗口中间的一个正方形会以从黑色到白色的灰度显示,具体取决于我移动鼠标的距离。

在我看来,好像我犯了一个常见的简单错误,但由于我使用的是套件公司本身的示例代码,所以我被困在这里。

4

0 回答 0