/********************************************************************** 文件名: 5.3_ImageShrinkMagnifyExample.cpp Copyright (c) 张晓东, 罗火灵. All rights reserved. 更多信息请访问: http://www.vtkchina.org (VTK中国) http://blog.csdn.net/www_doling_net (东灵工作室) **********************************************************************/ #include #include #include #include #include #include #include #include #include #include //测试图像:../data/lena.bmp int main(int argc, char* argv[]) { if (argc < 2) { std::cout< reader = vtkSmartPointer::New(); reader->SetFileName ( argv[1] ); reader->Update(); vtkSmartPointer shrinkFilter = vtkSmartPointer::New(); shrinkFilter->SetInputConnection(reader->GetOutputPort()); shrinkFilter->SetShrinkFactors(16,16,1); shrinkFilter->Update(); vtkSmartPointer magnifyFilter = vtkSmartPointer::New(); magnifyFilter->SetInputConnection(reader->GetOutputPort()); magnifyFilter->SetMagnificationFactors(10,10,1); magnifyFilter->Update(); int originalDims[3]; reader->GetOutput()->GetDimensions(originalDims); double originalSpace[3]; reader->GetOutput()->GetSpacing(originalSpace); int shrinkDims[3]; shrinkFilter->GetOutput()->GetDimensions(shrinkDims); double shrinkSpace[3]; shrinkFilter->GetOutput()->GetSpacing(shrinkSpace); int magnifyDims[3]; magnifyFilter->GetOutput()->GetDimensions(magnifyDims); double magnifySpace[3]; magnifyFilter->GetOutput()->GetSpacing(magnifySpace); std::cout<<"原图图像维数 :"< originalActor = vtkSmartPointer::New(); originalActor->SetInput( reader->GetOutput()); vtkSmartPointer shrinkActor = vtkSmartPointer::New(); shrinkActor->SetInput(shrinkFilter->GetOutput()); vtkSmartPointer magnifyActor = vtkSmartPointer::New(); magnifyActor->SetInput(magnifyFilter->GetOutput()); double originalViewport[4] = {0.0, 0.0, 0.33, 1.0}; double shrinkViewport[4] = {0.33, 0.0, 0.66, 1.0}; double magnifyViewport[4] = {0.66, 0.0, 1.0, 1.0}; vtkSmartPointer originalRenderer = vtkSmartPointer::New(); originalRenderer->SetViewport(originalViewport); originalRenderer->AddActor(originalActor); originalRenderer->ResetCamera(); originalRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer shrinkRenderer = vtkSmartPointer::New(); shrinkRenderer->SetViewport(shrinkViewport); shrinkRenderer->AddActor(shrinkActor); shrinkRenderer->ResetCamera(); shrinkRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer magnifyRenderer = vtkSmartPointer::New(); magnifyRenderer->SetViewport(magnifyViewport); magnifyRenderer->AddActor(magnifyActor); magnifyRenderer->ResetCamera(); magnifyRenderer->SetBackground(1.0, 1.0, 1.0); vtkSmartPointer renderWindow = vtkSmartPointer::New(); renderWindow->AddRenderer(originalRenderer); renderWindow->AddRenderer(shrinkRenderer); renderWindow->AddRenderer(magnifyRenderer); renderWindow->SetSize(640, 320); renderWindow->Render(); renderWindow->SetWindowName("ImageShrinkMagnifyExample"); vtkSmartPointer renderWindowInteractor = vtkSmartPointer::New(); vtkSmartPointer style = vtkSmartPointer::New(); renderWindowInteractor->SetInteractorStyle(style); renderWindowInteractor->SetRenderWindow(renderWindow); renderWindowInteractor->Initialize(); renderWindowInteractor->Start(); return EXIT_SUCCESS; }