obb vtk 定点坐标_VTK 图形基本操作进阶_点云配准技术(LandMark标记点算法和坐标系显示方法)...

1 #include

2 VTK_MODULE_INIT(vtkRenderingOpenGL);3 VTK_MODULE_INIT(vtkRenderingFreeType);4 VTK_MODULE_INIT(vtkInteractionStyle);5

6 #include

7 #include

8 #include

9 #include

10 #include

11 #include

12 #include

13 #include

14 #include

15 #include

16 #include

17 #include

18 #include

19 //研究一下坐标系显示位置

20 #include

21 intmain()22 {23 vtkSmartPointer sourcePoints =

24 vtkSmartPointer::New();25 double sourcePoint1[3] = { 0.5, 0, 0};26 sourcePoints->InsertNextPoint(sourcePoint1);27 double sourcePoint2[3] = { 0, 0.5, 0};28 sourcePoints->InsertNextPoint(sourcePoint2);29 double sourcePoint3[3] = { 0, 0, 0.5};30 sourcePoints->InsertNextPoint(sourcePoint3);31

32 vtkSmartPointer targetPoints =

33 vtkSmartPointer::New();34 double targetPoint1[3] = { 0.0, 0.0, 0.55};35 targetPoints->InsertNextPoint(targetPoint1);36 double targetPoint2[3] = { 0.0, 0.55, 0.0};37 targetPoints->InsertNextPoint(targetPoint2);38 double targetPoint3[3] = { -0.55, 0.0, 0.0};39 targetPoints->InsertNextPoint(targetPoint3);40 //利用Landmark算法求变换矩阵

41 vtkSmartPointer landmarkTransform =

42 vtkSmartPointer::New();43 landmarkTransform->SetSourceLandmarks(sourcePoints);44 landmarkTransform->SetTargetLandmarks(targetPoints);45 landmarkTransform->SetModeToRigidBody(); //执行刚体配准

46 landmarkTransform->Update();47 构造PolyData类型 进行图形可视化48 vtkSmartPointer source =

49 vtkSmartPointer::New();50 source->SetPoints(sourcePoints);51 vtkSmartPointer target =

52 vtkSmartPointer::New();53 target->SetPoints(targetPoints);54 /

55 vtkSmartPointer sourceGlyphFilter =

56 vtkSmartPointer::New();57 sourceGlyphFilter->SetInputData(source);58 sourceGlyphFilter->Update();59

60 vtkSmartPointer targetGlyphFilter =

61 vtkSmartPointer::New();62 targetGlyphFilter->SetInputData(target);63 targetGlyphFilter->Update();64 源数据施加配准变换矩阵65 vtkSmartPointer transformFilter =

66 vtkSmartPointer::New();67 transformFilter->SetInputData(sourceGlyphFilter->GetOutput());68 transformFilter->SetTransform(landmarkTransform);69 transformFilter->Update();70 /

71 vtkSmartPointer sourceMapper =

72 vtkSmartPointer::New();73 sourceMapper->SetInputConnection(sourceGlyphFilter->GetOutputPort());74

75 vtkSmartPointer sourceActor =

76 vtkSmartPointer::New();77 sourceActor->SetMapper(sourceMapper);78 sourceActor->GetProperty()->SetColor(1, 1, 0);79 sourceActor->GetProperty()->SetPointSize(10);80

81 vtkSmartPointer targetMapper =

82 vtkSmartPointer::New();83 targetMapper->SetInputConnection(targetGlyphFilter->GetOutputPort());84

85 vtkSmartPointer targetActor =

86 vtkSmartPointer::New();87 targetActor->SetMapper(targetMapper);88 targetActor->GetProperty()->SetColor(0, 1, 0);89 targetActor->GetProperty()->SetPointSize(10);90

91 vtkSmartPointer solutionMapper =

92 vtkSmartPointer::New();93 solutionMapper->SetInputConnection(transformFilter->GetOutputPort());94

95 vtkSmartPointer solutionActor =

96 vtkSmartPointer::New();97 solutionActor->SetMapper(solutionMapper);98 solutionActor->GetProperty()->SetColor(1, 0, 0);99 solutionActor->GetProperty()->SetPointSize(10);100

101 vtkSmartPointer render =

102 vtkSmartPointer::New();103 render->AddActor(sourceActor);104 render->AddActor(targetActor);105 render->AddActor(solutionActor);106 render->SetBackground(0, 0, 0);107

108 vtkSmartPointer rw =

109 vtkSmartPointer::New();110 rw->AddRenderer(render);111 rw->SetSize(480, 480);112 rw->SetWindowName("Regisration by Landmark");113 //设置坐标系显示功能

114 vtkSmartPointer axes =

115 vtkSmartPointer::New();116 axes->SetScale(10);117 render->AddActor(axes);118

119 vtkSmartPointer rwi =

120 vtkSmartPointer::New();121 rwi->SetRenderWindow(rw);122 /************************************************************/

123 vtkSmartPointer widget =

124 vtkSmartPointer::New();125 widget->SetOutlineColor(0.9300, 0.5700, 0.1300);126 widget->SetOrientationMarker(axes);127 widget->SetInteractor(rwi); //加入鼠标交互

128 widget->SetViewport(0.0, 0.0, 0.3, 0.3); //设置显示位置

129 widget->SetEnabled(1);130 widget->InteractiveOn();//开启鼠标交互

131 /************************************************************/

132 render->ResetCamera();133 rw->Render();134 rwi->Initialize();135 rwi->Start();136

137 return 0;138 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值