VTK系列52_VTK对几何体进行曲率计算

实例52:曲率计算

                                                                         

 

#include "vtkAutoInit.h" 
//VTK_MODULE_INIT(vtkRenderingOpenGL2);
//VTK_MODULE_INIT(vtkInteractionStyle);

VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);

#include <vtkSmartPointer.h>
#include <vtkPolyDataReader.h>
#include <vtkCurvatures.h>
#include <vtkLookupTable.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkScalarBarActor.h>
#include <vtkPointData.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>

	int main()
	{
		vtkSmartPointer<vtkPolyDataReader> reader =
			vtkSmartPointer<vtkPolyDataReader>::New();
		reader->SetFileName("C:\\Users\\Administrator\\Desktop\\VTK2\\hellovtk\\vtk_图像处理学习\\第六章_图像处理\\data\\fran_cut.vtk");
		reader->Update();

		vtkSmartPointer<vtkCurvatures> curvaturesFilter =
			vtkSmartPointer<vtkCurvatures>::New();
		curvaturesFilter->SetInputConnection(reader->GetOutputPort());
		//curvaturesFilter->SetCurvatureTypeToMinimum(); //最小曲率
		curvaturesFilter->SetCurvatureTypeToMaximum();   //最大曲率
		//curvaturesFilter->SetCurvatureTypeToGaussian();//高斯曲率
		//curvaturesFilter->SetCurvatureTypeToMean();    //平均曲率
		curvaturesFilter->Update();

		double scalarRange[2];
		curvaturesFilter->GetOutput()->GetScalarRange(scalarRange);
		//建立查找表 做颜色映射
		vtkSmartPointer<vtkLookupTable> lut =
			vtkSmartPointer<vtkLookupTable>::New();
		lut->SetHueRange(0.0, 0.6);
		lut->SetAlphaRange(1.0, 1.0);
		lut->SetValueRange(1.0, 1.0);
		lut->SetSaturationRange(1.0, 1.0);
		lut->SetNumberOfTableValues(256);
		lut->SetRange(scalarRange);
		lut->Build();
		///
		vtkSmartPointer<vtkPolyDataMapper> mapper =
			vtkSmartPointer<vtkPolyDataMapper>::New();
		mapper->SetInputData(curvaturesFilter->GetOutput());
		mapper->SetLookupTable(lut);
		mapper->SetScalarRange(scalarRange);

		vtkSmartPointer<vtkActor> actor =
			vtkSmartPointer<vtkActor>::New();
		actor->SetMapper(mapper);

		vtkSmartPointer<vtkScalarBarActor> scalarBar =
			vtkSmartPointer<vtkScalarBarActor>::New();
		scalarBar->SetLookupTable(mapper->GetLookupTable());
		scalarBar->SetTitle(curvaturesFilter->GetOutput()->GetPointData()->GetScalars()->GetName());
		scalarBar->SetNumberOfLabels(5); //设置5个标签

		vtkSmartPointer<vtkRenderer> render =
			vtkSmartPointer<vtkRenderer>::New();
		render->AddActor(actor);
		render->AddActor2D(scalarBar);
		render->SetBackground(0, 0, 0);

		vtkSmartPointer<vtkRenderWindow> rw =
			vtkSmartPointer<vtkRenderWindow>::New();
		rw->AddRenderer(render);
		rw->SetSize(640, 480);
		rw->SetWindowName("Calculating PolyData Curvature");

		vtkSmartPointer<vtkRenderWindowInteractor> rwi =
			vtkSmartPointer<vtkRenderWindowInteractor>::New();
		rwi->SetRenderWindow(rw);
		rwi->Initialize();
		rwi->Start();
		return 0;
	}

VTK系列目录:

1 VTK基本概念

2 VTK图像处理

3 VTK图形处理

4 VTK体绘制

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦我飞也

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值