ITK 实现图像数据的读取,然后通过连接器把ITK读取的图像数据传输到VTK 然后进行显示。
#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkImageToVTKImageFilter.h"
#include "itkJPEGImageIOFactory.h"
#include "vtkSmartPointer.h"
#include "vtkImageViewer.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2); // VTK was built with vtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
#include "vtkImageFlip.h"
//ITK and VTK to show picture test
int main(int argc, char **argv)
{
typedef itk::Image<unsigned char, 2> ImageType;//the type of pic
typedef itk::ImageFileReader<ImageType> ReaderType; //the class of read pic
typedef itk::ImageToVTKImageFilter<ImageType> ConnectorType; //connenct itk and vtk
ReaderType::Pointer reader = ReaderType::New();
ConnectorType::Pointer connector = ConnectorType::New();
reader->SetFileName("test1.jpg");
itk::JPEGImageIOFactory::RegisterOneFactory();
connector->SetInput(reader->GetOutput());
connector->Update();
vtkSmartPointer<vtkImageFlip> imageflip = vtkSmartPointer<vtkImageFlip>::New();
imageflip->SetInputData(connector->GetOutput());
imageflip->SetFilteredAxes(1);//Y轴
imageflip->Update();
vtkSmartPointer<vtkImageViewer> viewer = vtkSmartPointer<vtkImageViewer>::New();
vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
viewer->SetInputData(imageflip->GetOutput());
viewer->SetupInteractor(interactor);
viewer->GetRenderWindow()->SetSize(484, 300);//set window size
viewer->SetColorWindow(255); //set window color
viewer->SetColorLevel(128); //set the level of window
viewer->Render();
interactor->Initialize();
interactor->Start();
return EXIT_SUCCESS;
}