VTK 实例22:JPG图像信息的访问(图像维数、原点坐标和像素间隔)

发布时间 2023-08-15 11:29:17作者: 一杯清酒邀明月
 1 #include <vtkAutoInit.h>
 2 VTK_MODULE_INIT(vtkRenderingOpenGL2);
 3 VTK_MODULE_INIT(vtkInteractionStyle);
 4 
 5 #include <vtkSmartPointer.h>
 6 #include <vtkImageViewer2.h>
 7 #include <vtkRenderWindow.h>
 8 #include <vtkRenderWindowInteractor.h>
 9 #include <vtkRenderer.h>
10 #include <vtkImageReader2Factory.h>
11 #include <vtkImageReader2.h>
12 #include <vtkJPEGReader.h>//JPEG图像读取类
13 #include <vtkImageData.h>
14 
15 //测试图像:../data/lena.jpg
16 int main(int argc, char* argv[])
17 {
18     //实例化一个对象dcmReader
19     vtkJPEGReader* reader = vtkJPEGReader::New();
20     reader->SetFileName("lena.jpg");//读取图像
21 
22     reader->Update();
23 
24     int dims[3];
25     reader->GetOutput()->GetDimensions(dims);
26     std::cout << "图像维数:" << dims[0] << " " << dims[1] << " " << dims[2] << std::endl;
27 
28     double origin[3];
29     reader->GetOutput()->GetOrigin(origin);
30     std::cout << "图像原点:" << origin[0] << " " << origin[1] << " " << origin[2] << std::endl;
31 
32     double spaceing[3];
33     reader->GetOutput()->GetSpacing(spaceing);
34     std::cout << "像素间隔:" << spaceing[0] << " " << spaceing[1] << " " << spaceing[2] << std::endl;
35 
36     vtkSmartPointer<vtkImageViewer2> imageViewer =
37         vtkSmartPointer<vtkImageViewer2>::New();
38     imageViewer->SetInputConnection(reader->GetOutputPort());
39 
40     vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
41         vtkSmartPointer<vtkRenderWindowInteractor>::New();
42     imageViewer->SetupInteractor(renderWindowInteractor);
43     imageViewer->Render();
44     imageViewer->GetRenderer()->ResetCamera();
45     imageViewer->Render();
46 
47     imageViewer->GetRenderer()->SetBackground(1.0, 1.0, 1.0);
48     imageViewer->SetSize(640, 480);
49     imageViewer->GetRenderWindow()->SetWindowName("GetImageInformationExample");
50 
51     renderWindowInteractor->Start();
52 
53     return 0;
54 }