VTK图像显示方式

用VTK显示图像的几种方式:

方式1:

读取数据-----映射(mapper)------演员(actor)-------渲染(render)-----渲染窗口(renwin)----交互方式

在console下实现的代码如下:

#include "vtkActor.h"

#include "vtkRenderer.h"

#include "vtkRenderWindow.h"

#include "vtkRenderWindowInteractor.h"

#include "vtkImageViewer.h"

#include "vtkImageViewer2.h"

#include"vtkPNGReader.h"

#include "vtkImageActor.h"

#include "vtkInteractorStyleImage.h"

#include "vtkActor2D.h"

#include "vtkAutoInit.h"

VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
//vtk show pic with the way of one
int main()

{

	int extent[6];

	vtkSmartPointer< vtkPNGReader>m_reader = vtkSmartPointer<vtkPNGReader>::New();

	m_reader->SetFileName("1.png");

	m_reader->SetDataByteOrderToLittleEndian();//the type of data reading 

	m_reader->SetDataScalarTypeToUnsignedChar();//the type of data

	m_reader->SetFileDimensionality(3);

	vtkSmartPointer<vtkImageMapper>mapper = vtkSmartPointer<vtkImageMapper>::New();

	mapper->SetInputConnection(m_reader->GetOutputPort());

	mapper->SetColorLevel(128);

	mapper->SetColorWindow(256);

	vtkSmartPointer<vtkActor2D>actor = vtkSmartPointer<vtkActor2D>::New();

	actor->SetMapper(mapper);

	vtkSmartPointer<vtkRenderer>m_Renderer = vtkSmartPointer<vtkRenderer>::New();

	vtkSmartPointer<vtkRenderWindow>m_RenWin = vtkSmartPointer<vtkRenderWindow>::New();

	m_RenWin->AddRenderer(m_Renderer);

	vtkSmartPointer<vtkRenderWindowInteractor>iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();

	iren->SetRenderWindow(m_RenWin);

	vtkSmartPointer<vtkInteractorStyleImage>interactor = vtkSmartPointer<vtkInteractorStyleImage>::New();

	iren->SetInteractorStyle(interactor);

	m_Renderer->AddActor(actor);

	m_Renderer->SetBackground(0, 0, 0);

	m_RenWin->Render();

	m_reader->GetDataExtent(extent);

	iren->Initialize();

	iren->Start();

	return 0;

}


方式二:

图像数据读取----数据给imageactor----渲染显示

在console下实现如下

#include "vtkActor.h"

#include "vtkRenderer.h"

#include "vtkRenderWindow.h"

#include "vtkRenderWindowInteractor.h"

#include "vtkImageViewer.h"

#include "vtkImageViewer2.h"

#include"vtkPNGReader.h"

#include "vtkImageActor.h"

#include "vtkInteractorStyleImage.h"

#include "vtkActor2D.h"

#include "vtkAutoInit.h"

VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
//vtk show pic with the way of 2
int main()

{

	vtkSmartPointer<vtkPNGReader> m_reader = vtkSmartPointer<vtkPNGReader>::New();

	m_reader->SetFileName("1.png");

	m_reader->SetDataByteOrderToLittleEndian();

	m_reader->SetDataScalarTypeToUnsignedChar();

	m_reader->SetFileDimensionality(3);
	m_reader->Update();

	vtkSmartPointer<vtkImageActor>m_Actor = vtkSmartPointer<vtkImageActor>::New();

	m_Actor->SetInputData(m_reader->GetOutput());


	vtkSmartPointer<vtkRenderer>m_Renderer = vtkSmartPointer<vtkRenderer>::New();

	vtkSmartPointer<vtkRenderWindow>m_RenWin = vtkSmartPointer<vtkRenderWindow>::New();

	m_RenWin->AddRenderer(m_Renderer);

	vtkSmartPointer<vtkRenderWindowInteractor>iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();

	iren->SetRenderWindow(m_RenWin);

	vtkSmartPointer<vtkInteractorStyleImage>interactor = vtkSmartPointer<vtkInteractorStyleImage>::New();

	iren->SetInteractorStyle(interactor);

	m_RenWin->SetSize(300, 300);

	m_Renderer->AddActor(m_Actor);

	m_Renderer->SetBackground(0.0, 0.0, 0.0);

	m_RenWin->Render();

	iren->Initialize();

	iren->Start();

	return 0;

}


方式3:

用ImageView2

console实现如下:

#include "vtkActor.h"

#include "vtkRenderer.h"

#include "vtkRenderWindow.h"

#include "vtkRenderWindowInteractor.h"

#include "vtkImageViewer.h"

#include "vtkImageViewer2.h"

#include"vtkPNGReader.h"

#include "vtkImageActor.h"

#include "vtkInteractorStyleImage.h"

#include "vtkActor2D.h"

#include "vtkAutoInit.h"

VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
//vtk show pic 3
int main()
{
	vtkSmartPointer<vtkPNGReader> reader =
		vtkSmartPointer<vtkPNGReader>::New();
	reader->SetFileName("1.png");
	reader->SetDataByteOrderToLittleEndian();
	reader->SetDataScalarTypeToUnsignedChar();
	reader->Update();

	vtkSmartPointer<vtkImageViewer2> imageViewer =
		vtkSmartPointer<vtkImageViewer2>::New();
	imageViewer->SetInputConnection(reader->GetOutputPort());

	vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
		vtkSmartPointer<vtkRenderWindowInteractor>::New();
	imageViewer->SetupInteractor(renderWindowInteractor);

	imageViewer->SetColorLevel(128);
	imageViewer->SetColorWindow(256);
//	imageViewer->SetSlice(40);
//	imageViewer->SetSliceOrientationToXY();
	imageViewer->Render();

	imageViewer->GetRenderer()->SetBackground(1.0, 1.0, 1.0);
//	imageViewer->SetSize(640, 480);
	imageViewer->GetRenderWindow()->SetSize(640, 480);
	imageViewer->GetRenderWindow()->SetWindowName("DisplayImageExample");

	renderWindowInteractor->Start();

	return EXIT_SUCCESS;
}






猜你喜欢

转载自blog.csdn.net/thecentry/article/details/79126613