我有一个简单的文件,它应该以.raw格式显示医学图像,方法是使用MetaImageReader从.mhd文件中读取它的标题。 我对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();
}
我没有收到任何错误。仅出现带有黑色背景的窗口。当我在窗口中单击并移动鼠标时,窗口中间的正方形将显示为从黑到白的灰度,具体取决于我移动鼠标的距离。
在我看来,好像我犯了一个常见的简单错误,但由于我使用了kitware公司本身的示例代码,我被困在这里。