1 #include "vtkAutoInit.h"
2 //VTK_MODULE_INIT(vtkRenderingOpenGL2);
3 //VTK_MODULE_INIT(vtkInteractionStyle);
4
5 VTK_MODULE_INIT(vtkRenderingOpenGL2);
6 VTK_MODULE_INIT(vtkInteractionStyle);
7 VTK_MODULE_INIT(vtkRenderingFreeType);
8
9 #include <vtkSmartPointer.h>
10 #include <vtkPolyDataReader.h>
11 #include <vtkCurvatures.h>
12 #include <vtkLookupTable.h>
13 #include <vtkPolyDataMapper.h>
14 #include <vtkActor.h>
15 #include <vtkScalarBarActor.h>
16 #include <vtkPointData.h>
17 #include <vtkRenderer.h>
18 #include <vtkRenderWindow.h>
19 #include <vtkRenderWindowInteractor.h>
20
21 int main()
22 {
23 vtkSmartPointer<vtkPolyDataReader> reader =
24 vtkSmartPointer<vtkPolyDataReader>::New();
25 reader->SetFileName("C:\\Users\\Administrator\\Desktop\\VTK2\\hellovtk\\vtk_图像处理学习\\第六章_图像处理\\data\\fran_cut.vtk");
26 reader->Update();
27
28 vtkSmartPointer<vtkCurvatures> curvaturesFilter =
29 vtkSmartPointer<vtkCurvatures>::New();
30 curvaturesFilter->SetInputConnection(reader->GetOutputPort());
31 //curvaturesFilter->SetCurvatureTypeToMinimum(); //最小曲率
32 curvaturesFilter->SetCurvatureTypeToMaximum(); //最大曲率
33 //curvaturesFilter->SetCurvatureTypeToGaussian();//高斯曲率
34 //curvaturesFilter->SetCurvatureTypeToMean(); //平均曲率
35 curvaturesFilter->Update();
36
37 double scalarRange[2];
38 curvaturesFilter->GetOutput()->GetScalarRange(scalarRange);
39 //建立查找表 做颜色映射
40 vtkSmartPointer<vtkLookupTable> lut =
41 vtkSmartPointer<vtkLookupTable>::New();
42 lut->SetHueRange(0.0, 0.6);
43 lut->SetAlphaRange(1.0, 1.0);
44 lut->SetValueRange(1.0, 1.0);
45 lut->SetSaturationRange(1.0, 1.0);
46 lut->SetNumberOfTableValues(256);
47 lut->SetRange(scalarRange);
48 lut->Build();
49 ///
50 vtkSmartPointer<vtkPolyDataMapper> mapper =
51 vtkSmartPointer<vtkPolyDataMapper>::New();
52 mapper->SetInputData(curvaturesFilter->GetOutput());
53 mapper->SetLookupTable(lut);
54 mapper->SetScalarRange(scalarRange);
55
56 vtkSmartPointer<vtkActor> actor =
57 vtkSmartPointer<vtkActor>::New();
58 actor->SetMapper(mapper);
59
60 vtkSmartPointer<vtkScalarBarActor> scalarBar =
61 vtkSmartPointer<vtkScalarBarActor>::New();
62 scalarBar->SetLookupTable(mapper->GetLookupTable());
63 scalarBar->SetTitle(curvaturesFilter->GetOutput()->GetPointData()->GetScalars()->GetName());
64 scalarBar->SetNumberOfLabels(5); //设置5个标签
65
66 vtkSmartPointer<vtkRenderer> render =
67 vtkSmartPointer<vtkRenderer>::New();
68 render->AddActor(actor);
69 render->AddActor2D(scalarBar);
70 render->SetBackground(0, 0, 0);
71
72 vtkSmartPointer<vtkRenderWindow> rw =
73 vtkSmartPointer<vtkRenderWindow>::New();
74 rw->AddRenderer(render);
75 rw->SetSize(640, 480);
76 rw->SetWindowName("Calculating PolyData Curvature");
77
78 vtkSmartPointer<vtkRenderWindowInteractor> rwi =
79 vtkSmartPointer<vtkRenderWindowInteractor>::New();
80 rwi->SetRenderWindow(rw);
81 rwi->Initialize();
82 rwi->Start();
83 return 0;
84 }