VTK图像显示

总结:本博文是vtkImageViewer2和vtkImageActor用法及程序实现结果,属于学习笔记
#include"vtkSmartPointer.h"
#include"vtkMetaImageReader.h"
#include"vtkImageViewer2.h"
#include"vtkRenderer.h"
#include"vtkRenderWindow.h"
#include"vtkRenderWindowInteractor.h"
//vtkImageViewer2封装了vtk图像显示的可视化渲染引擎
int main(int argc,char* argv[]){
	vtkSmartPointer<vtkMetaImageReader> reader = vtkSmartPointer<vtkMetaImageReader>::New();
	reader->SetFileName("head.mhd");
	reader->Update();
	vtkSmartPointer<vtkImageViewer2> viewer = vtkSmartPointer<vtkImageViewer2>::New();
	viewer->SetInputConnection(reader->GetOutputPort());
	//设置基本属性
	viewer->SetSize(640,480);
	viewer->SetColorLevel(500);  //设置窗宽
	viewer->SetColorWindow(2000);  //窗维
	viewer->SetSlice(20);        //切片索引
	viewer->SetSliceOrientationToXY(); //切片的方向设置为XY平面方向
	viewer->Render();
	viewer->GetRenderer()->SetBackground(1, 1, 1);
	viewer->GetRenderWindow()->SetWindowName("Image view 2D");

	vtkSmartPointer<vtkRenderWindowInteractor> rwi = vtkSmartPointer<vtkRenderWindowInteractor>::New();
	//设置交互
	viewer->SetupInteractor(rwi);
	rwi->Start();
	
	return 0;
}


运行结果:

//vtkImageActor用法及显示
#include"vtkSmartPointer.h"
#include"vtkBMPReader.h"
#include"vtkImageActor.h"
#include"vtkRenderer.h"
#include"vtkRenderWindow.h"
#include"vtkRenderWindowInteractor.h"
#include"vtkInteractorStyleImage.h"
//读入图像后,依次建立vtkImageActor,vtkRender,vtkRenderWindow,vtkRenderWindowInteractor,并组装为管线。
//为了屏蔽旋转操作,建立vtkInteractorStyleImage对象,并通过rwi->SetInteractorStyle(style)设置交互对象。
int main(){
	vtkSmartPointer<vtkBMPReader> reader = vtkSmartPointer<vtkBMPReader>::New();
	reader->SetFileName("test.bmp");
	reader->Update();
	vtkSmartPointer<vtkImageActor> actor = vtkSmartPointer<vtkImageActor>::New();
	actor->SetInputData(reader->GetOutput());
	
	vtkSmartPointer<vtkRenderer> render = vtkSmartPointer<vtkRenderer>::New();
	render->AddActor2D(actor);
	render->ResetCamera();
	render->SetBackground(1, 1, 1);
	vtkSmartPointer<vtkRenderWindow> window = vtkSmartPointer<vtkRenderWindow>::New();
	window->AddRenderer(render);
	window->SetSize(640, 480);
	window->SetWindowName("Imageviewer3D");
	window->Render();   //调用的是vtkrenderwindow的render函数
	vtkSmartPointer<vtkRenderWindowInteractor> rwi = vtkSmartPointer<vtkRenderWindowInteractor>::New();
	vtkSmartPointer<vtkInteractorStyleImage> style = vtkSmartPointer<vtkInteractorStyleImage>::New();
	rwi->SetInteractorStyle(style);
	rwi->SetRenderWindow(window);
	rwi->Initialize();
	rwi->Start();

	return 0;
}

//需要注意的是,vtkImageActor接收的图像vtkImageData数据类型必须为unsigned char类型,因此在显示之前,
//必要的时候需要利用vtkImageCast将图像数据类型转换为unsigned char。

运行结果:



参考链接:

https://blog.csdn.net/www_doling_net/article/details/8541534

https://blog.csdn.net/shenziheng1/article/details/54565337

猜你喜欢

转载自blog.csdn.net/kateyabc/article/details/80410585