1 #include "vtkAutoInit.h" 2 VTK_MODULE_INIT(vtkRenderingOpenGL2); 3 VTK_MODULE_INIT(vtkInteractionStyle); 4 5 #include <vtkSmartPointer.h> 6 #include <vtkImageData.h> 7 #include <vtkRenderWindow.h> 8 #include <vtkRenderWindowInteractor.h> 9 #include <vtkInteractorStyleImage.h> 10 #include <vtkRenderer.h> 11 #include <vtkImageActor.h> 12 #include <vtkBMPReader.h> 13 #include <vtkImageShrink3D.h> 14 #include <vtkImageMagnify.h> 15 16 //测试图像:../data/lena.bmp 17 int main(int argc, char* argv[]) 18 { 19 20 vtkSmartPointer<vtkBMPReader> reader = 21 vtkSmartPointer<vtkBMPReader>::New(); 22 reader->SetFileName ( "lena.bmp" ); 23 reader->Update(); 24 25 vtkSmartPointer<vtkImageShrink3D> shrinkFilter = 26 vtkSmartPointer<vtkImageShrink3D>::New(); 27 shrinkFilter->SetInputConnection(reader->GetOutputPort()); 28 shrinkFilter->SetShrinkFactors(16,16,1); 29 shrinkFilter->Update(); 30 31 vtkSmartPointer<vtkImageMagnify> magnifyFilter = 32 vtkSmartPointer<vtkImageMagnify>::New(); 33 magnifyFilter->SetInputConnection(reader->GetOutputPort()); 34 magnifyFilter->SetMagnificationFactors(10,10,1); 35 magnifyFilter->Update(); 36 37 int originalDims[3]; 38 reader->GetOutput()->GetDimensions(originalDims); 39 40 double originalSpace[3]; 41 reader->GetOutput()->GetSpacing(originalSpace); 42 43 int shrinkDims[3]; 44 shrinkFilter->GetOutput()->GetDimensions(shrinkDims); 45 46 double shrinkSpace[3]; 47 shrinkFilter->GetOutput()->GetSpacing(shrinkSpace); 48 49 int magnifyDims[3]; 50 magnifyFilter->GetOutput()->GetDimensions(magnifyDims); 51 52 double magnifySpace[3]; 53 magnifyFilter->GetOutput()->GetSpacing(magnifySpace); 54 55 std::cout<<"原图图像维数 :"<<originalDims[0] << " "<<originalDims[1]<<" "<<originalDims[2]<<std::endl; 56 std::cout<<"原图图像像素间隔 :"<<originalSpace[0] << " "<<originalSpace[1]<<" "<<originalSpace[2]<<std::endl; 57 std::cout<<"降采样图像维数 :"<<shrinkDims[0] << " "<<shrinkDims[1]<<" "<<shrinkDims[2]<<std::endl; 58 std::cout<<"降采样图像像素间隔:"<<shrinkSpace[0] << " "<<shrinkSpace[1]<<" "<<shrinkSpace[2]<<std::endl; 59 std::cout<<"升采样图像维数 :"<<magnifyDims[0] << " "<<magnifyDims[1]<<" "<<magnifyDims[2]<<std::endl; 60 std::cout<<"升采样图像像素间隔:"<<magnifySpace[0] << " "<<magnifySpace[1]<<" "<<magnifySpace[2]<<std::endl; 61 62 vtkSmartPointer<vtkImageActor> originalActor = 63 vtkSmartPointer<vtkImageActor>::New(); 64 originalActor->SetInputData(reader->GetOutput()); 65 66 vtkSmartPointer<vtkImageActor> shrinkActor = 67 vtkSmartPointer<vtkImageActor>::New(); 68 shrinkActor->SetInputData(shrinkFilter->GetOutput()); 69 70 vtkSmartPointer<vtkImageActor> magnifyActor = 71 vtkSmartPointer<vtkImageActor>::New(); 72 magnifyActor->SetInputData(magnifyFilter->GetOutput()); 73 74 double originalViewport[4] = {0.0, 0.0, 0.33, 1.0}; 75 double shrinkViewport[4] = {0.33, 0.0, 0.66, 1.0}; 76 double magnifyViewport[4] = {0.66, 0.0, 1.0, 1.0}; 77 78 vtkSmartPointer<vtkRenderer> originalRenderer = 79 vtkSmartPointer<vtkRenderer>::New(); 80 originalRenderer->SetViewport(originalViewport); 81 originalRenderer->AddActor(originalActor); 82 originalRenderer->ResetCamera(); 83 originalRenderer->SetBackground(1.0, 1.0, 1.0); 84 85 vtkSmartPointer<vtkRenderer> shrinkRenderer = 86 vtkSmartPointer<vtkRenderer>::New(); 87 shrinkRenderer->SetViewport(shrinkViewport); 88 shrinkRenderer->AddActor(shrinkActor); 89 shrinkRenderer->ResetCamera(); 90 shrinkRenderer->SetBackground(1.0, 1.0, 1.0); 91 92 vtkSmartPointer<vtkRenderer> magnifyRenderer = 93 vtkSmartPointer<vtkRenderer>::New(); 94 magnifyRenderer->SetViewport(magnifyViewport); 95 magnifyRenderer->AddActor(magnifyActor); 96 magnifyRenderer->ResetCamera(); 97 magnifyRenderer->SetBackground(1.0, 1.0, 1.0); 98 99 vtkSmartPointer<vtkRenderWindow> renderWindow = 100 vtkSmartPointer<vtkRenderWindow>::New(); 101 renderWindow->AddRenderer(originalRenderer); 102 renderWindow->AddRenderer(shrinkRenderer); 103 renderWindow->AddRenderer(magnifyRenderer); 104 renderWindow->SetSize(640, 320); 105 renderWindow->Render(); 106 renderWindow->SetWindowName("ImageShrinkMagnifyExample"); 107 108 vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = 109 vtkSmartPointer<vtkRenderWindowInteractor>::New(); 110 vtkSmartPointer<vtkInteractorStyleImage> style = 111 vtkSmartPointer<vtkInteractorStyleImage>::New(); 112 113 renderWindowInteractor->SetInteractorStyle(style); 114 renderWindowInteractor->SetRenderWindow(renderWindow); 115 renderWindowInteractor->Initialize(); 116 renderWindowInteractor->Start(); 117 118 return EXIT_SUCCESS; 119 }标签:采样,1.0,降和升,33,vtkSmartPointer,GetOutput,renderWindow,New,include From: https://www.cnblogs.com/ybqjymy/p/17630939.html