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 <vtkImageShiftScale.h> 8 #include <vtkRenderWindow.h> 9 #include <vtkRenderWindowInteractor.h> 10 #include <vtkInteractorStyleImage.h> 11 #include <vtkRenderer.h> 12 #include <vtkImageActor.h> 13 #include <vtkBMPReader.h> 14 #include <vtkImageShrink3D.h> 15 16 //测试图像:../data/lena.bmp 17 int main(int argc, char* argv[]) 18 { 19 vtkSmartPointer<vtkBMPReader> reader = 20 vtkSmartPointer<vtkBMPReader>::New(); 21 reader->SetFileName("lena.bmp"); 22 reader->Update(); 23 24 vtkSmartPointer<vtkImageShrink3D> shrinkFilter = 25 vtkSmartPointer<vtkImageShrink3D>::New(); 26 shrinkFilter->SetInputConnection(reader->GetOutputPort()); 27 shrinkFilter->SetShrinkFactors(20,20,1); 28 shrinkFilter->Update(); 29 30 int originalDims[3]; 31 reader->GetOutput()->GetDimensions(originalDims); 32 33 double originalSpace[3]; 34 reader->GetOutput()->GetSpacing(originalSpace); 35 36 int shrinkDims[3]; 37 shrinkFilter->GetOutput()->GetDimensions(shrinkDims); 38 39 double shrinkSpace[3]; 40 shrinkFilter->GetOutput()->GetSpacing(shrinkSpace); 41 42 std::cout<<"原图图像维数 :"<<originalDims[0] << " "<<originalDims[1]<<" "<<originalDims[2]<<std::endl; 43 std::cout<<"原图图像像素间隔 :"<<originalSpace[0] << " "<<originalSpace[1]<<" "<<originalSpace[2]<<std::endl; 44 std::cout<<"重采样图像维数 :"<<shrinkDims[0] << " "<<shrinkDims[1]<<" "<<shrinkDims[2]<<std::endl; 45 std::cout<<"重采样图像像素间隔:"<<shrinkSpace[0] << " "<<shrinkSpace[1]<<" "<<shrinkSpace[2]<<std::endl; 46 47 vtkSmartPointer<vtkImageActor> originalActor = 48 vtkSmartPointer<vtkImageActor>::New(); 49 originalActor->SetInputData( reader->GetOutput()); 50 51 vtkSmartPointer<vtkImageActor> shrinkActor = 52 vtkSmartPointer<vtkImageActor>::New(); 53 shrinkActor->SetInputData(shrinkFilter->GetOutput()); 54 55 double originalViewport[4] = {0.0, 0.0, 0.5, 1.0}; 56 double shrinkViewport[4] = {0.5, 0.0, 1.0, 1.0}; 57 58 vtkSmartPointer<vtkRenderer> originalRenderer = 59 vtkSmartPointer<vtkRenderer>::New(); 60 originalRenderer->SetViewport(originalViewport); 61 originalRenderer->AddActor(originalActor); 62 originalRenderer->ResetCamera(); 63 originalRenderer->SetBackground(1.0, 1.0, 1.0); 64 65 vtkSmartPointer<vtkRenderer> shrinkRenderer = 66 vtkSmartPointer<vtkRenderer>::New(); 67 shrinkRenderer->SetViewport(shrinkViewport); 68 shrinkRenderer->AddActor(shrinkActor); 69 shrinkRenderer->ResetCamera(); 70 shrinkRenderer->SetBackground(1.0, 1.0, 1.0); 71 72 vtkSmartPointer<vtkRenderWindow> renderWindow = 73 vtkSmartPointer<vtkRenderWindow>::New(); 74 renderWindow->AddRenderer(originalRenderer); 75 renderWindow->AddRenderer(shrinkRenderer); 76 renderWindow->SetSize(640, 480); 77 renderWindow->Render(); 78 renderWindow->SetWindowName("ImageShrink3DExample"); 79 80 vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = 81 vtkSmartPointer<vtkRenderWindowInteractor>::New(); 82 vtkSmartPointer<vtkInteractorStyleImage> style = 83 vtkSmartPointer<vtkInteractorStyleImage>::New(); 84 85 renderWindowInteractor->SetInteractorStyle(style); 86 renderWindowInteractor->SetRenderWindow(renderWindow); 87 renderWindowInteractor->Initialize(); 88 renderWindowInteractor->Start(); 89 90 return EXIT_SUCCESS; 91 }标签:采样,1.0,32,VTK,vtkSmartPointer,reader,renderWindow,New,include From: https://www.cnblogs.com/ybqjymy/p/17630919.html