VTK 实例62:点云配准
1 #include <vtkAutoInit.h> 2 VTK_MODULE_INIT(vtkRenderingOpenGL2); 3 VTK_MODULE_INIT(vtkRenderingFreeType); 4 VTK_MODULE_INIT(vtkInteractionStyle); 5 6 #include <vtkPoints.h> 7 #include <vtkSmartPointer.h> 8 #include <vtkLandmarkTransform.h> 9 #include <vtkMatrix4x4.h> 10 #include <vtkPolyDataMapper.h> 11 #include <vtkActor.h> 12 #include <vtkRenderWindoh> 13 #include <vtkRenderer.h> 14 #include <vtkRenderWindowInteractor.h> 15 #include <vtkProperty.h> 16 #include <vtkTransformPolyDataFilter.h> 17 #include <vtkVertexGlyphFilter.h> 18 #include <vtkAxesActor.h> 19 20 int main(int, char *[]) 21 ; 25 sourcePoints>InsertNextPoint(sourcePoint1); 26 double sourcePoint2[3] = ; 27 sourcePoints>InsertNextPoint(sourcePoint2); 28 double sourcePoint3[3] = ; 29 sourcePoints>InsertNextPoint(sourcePoint3); 30 31 vtkSmartPointer<vtkPoints> targetPoints = 32 vtkSmartPointer<vtkPoints>::New(); 33 double targetPoint1[3] = ; 34 targetPoints>InsertNextPoint(targetPoint1); 35 double targetPoint2[3] = ; 36 targetPoints>InsertNextPoint(targetPoint2); 37 double targetPoint3[3] = ; 38 targetPoints>InsertNextPoint(targetPoint3); 39 40 vtkSmartPointer<vtkLandmarkTransform> landmarkTransform = 41 vtkSmartPointer<vtkLandmarkTransform>::New(); 42 landmarkTransform>SetSourceLandmarks(sourcePoints); 43 landmarkTransform>SetTargetLandmarks(targetPoints); 44 landmarkTransform>SetModeToRigidBody(); 45 landmarkTransform>Update(); 46 47 vtkSmartPointer<vtkPolyData> source = 48 vtkSmartPointer<vtkPolyData>::New(); 49 source>SetPoints(sourcePoints); 50 51 vtkSmartPointer<vtkPolyData> target = 52 vtkSmartPointer<vtkPolyData>::New(); 53 target>SetPoints(targetPoints); 54 55 vtkSmartPointer<vtkVertexGlyphFilter> sourceGlyphFilter = 56 vtkSmartPointer<vtkVertexGlyphFilter>::New(); 57 sourceGlyphFilter>SetInputData(source); 58 sourceGlyphFilter>Update(); 59 60 vtkSmartPointer<vtkVertexGlyphFilter> targetGlyphFilter = 61 vtkSmartPointer<vtkVertexGlyphFilter>::New(); 62 targetGlyphFilter>SetInputData(target); targetGlyphFilter>Update(); 64 65 vtkSmartPointer<vtkTransformPolyDataFilter> transformFilter = 66 vtkSmartPointer<vtkTransformPolyDataFilter>::New(); 67 transformFilter>SetInputData(sourceGlyphFilter>GetOutput()); 68 transformFilter>SetTransform(landmarkTransform); 69 transformFilter>Update(); 70 71 vtkSmartPointer<vtkPolyDataMapper> sourceMapper = 72 vtkSmartPointer<vtkPolyDataMapper>::New(); 73 sourceMapper>SetInputConnection(sourceGlyphFilter>GetOutputPort()); 74 75 vtkSmartPointer<vtkActor> sourceActor = 76 vtkSmartPointer<vtkActor>::New(); 77 sourceActor>SetMapper(sourceMapper); 78 sourceActor>GetProperty()>SetColor(1,1,0); 79 sourceActor>GetProperty()>SetPointSize(5); 80 81 vtkSmartPointer<vtkPolyDataMapper> targetMapper = 82 vtkSmartPointer<vtkPolyDataMapper>::New(); 83 targetMapper>SetInputConnection(targetGlyphFilter>GetOutputPort()); 84 85 vtkSmartPointer<vtkActor> targetActor = 86 vtkSmartPointer<vtkActor>::New(); 87 targetActor>SetMapper(targetMapper); 88 targetActor>GetProperty()>SetColor(1,0,0); 89 targetActor>GetProperty()>SetPointSize(5); 90 91 vtkSmartPointer<vtkPolyDataMapper> solutionMapper = 92 vtkSmartPointer<vtkPolyDataMapper>::New(); 93 solutionMapper>SetInputConnection(transformFilter>GetOutputPort()); 94 95 vtkSmartPointer<vtkActor> solutionActor = 96 vtkSmartPointer<vtkActor>::New(); 97 solutionActor>SetMapper(solutionMapper); 98 solutionActor>GetProperty()>SetColor(0,0,1); 99 solutionActor>GetProperty()>SetPointSize(5); 100 101 vtkSmartPointer<vtkRenderer> renderer = 102 vtkSmartPointer<vtkRenderer>::New(); 103 104 vtkSmartPointer<vtkRenderWindow> renderWindow = 105 vtkSmartPointer<vtkRenderWindow>::New(); 106 renderWindow>AddRenderer(renderer); 107 renderer>AddActor(sourceActor); 108 renderer>AddActor(targetActor); 109 renderer>AddActor(solutionActor); 110 111 vtkSmartPointer<vtkAxesActor> axes = 112 vtkSmartPointer<vtkAxesActor>::New(); 113 axes>SetScale(30); 114 renderer>AddActor(axes); 115 renderer>SetBackground(.3, .6, .3); 116 117 vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = 118 vtkSmartPointer<vtkRenderWindowInteractor>::New(); 119 renderWindowInteractor>SetRenderWindow(renderWindow); 120 121 renderWindow>SetSize(640, 480); 122 renderWindow>Render(); 123 renderWindow>SetWindowName("PolyDataLandmarkReg"); 124 renderWindow>Render(); 125 renderWindowInteractor>Start(); 126 127 return EXIT_SUCCESS; 128 }
1 #include <vtkAutoInit.h> 2 VTK_MODULE_INIT(vtkRenderingOpenGL2); 3 VTK_MODULE_INIT(vtkRenderingFreeType); 4 VTK_MODULE_INIT(vtkInteractionStyle); 5 6 #include <vtkPoints.h> 7 #include <vtkSmartPointer.h> 8 #include <vtkLandmarkTransform.h> 9 #include <vtkMatrix4x4.h> 10 #include <vtkPolyDataMapper.h> 11 #include <vtkActor.h> 12 #include <vtkRenderWindoh> 13 #include <vtkRenderer.h> 14 #include <vtkRenderWindowInteractor.h> 15 #include <vtkProperty.h> 16 #include <vtkTransformPolyDataFilter.h> 17 #include <vtkVertexGlyphFilter.h> 18 #include <vtkIterativeClosestPointTransform.h> 19 #include <vtkPolyDataReader.h> 20 #include <vtkTransform.h> 21 22 //测试文件:../data/fran_cut.vtk 23 int main(int argc, char * argv[]) 24
上一篇:VTK 实例52:曲率计算
下一篇:VTK 实例53:网格平滑
VTK
pla文件怎么看,pla文件用什么打开?
pl1文件怎么看,pl1文件用什么打开?
pl文件怎么看,pl文件用什么打开?
pl0文件怎么看,pl0文件用什么打开?
pkt文件怎么看,pkt文件用什么打开?
pkm文件怎么看,pkm文件用什么打开?
pks文件怎么看,pks文件用什么打开?
pka文件怎么看,pka文件用什么打开?
pkh文件怎么看,pkh文件用什么打开?
pkg文件怎么看,pkg文件用什么打开?