У меня есть простой файл, который должен отображать медицинское изображение в формате .raw, читая его заголовок из файла .mhd с помощью MetaImageReader.
Я не совсем знаком с 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();
}
Я не получаю никакой ошибки. Появляется только окно с черным фоном. Когда я щелкаю в окне и перемещаю мышь, квадрат в середине окна появляется в оттенках серого от черного до белого, в зависимости от того, как далеко я перемещаю мышь.
Мне кажется, что я совершил одну простую ошибку, но так как я использую пример кода от самой компании по производству комплектующих, я застрял здесь.
Задача ещё не решена.
Других решений пока нет …