有时候需要进行图片左右或者上下旋转,或者X,Y,Z之间的变换,用到下边两个函数即可。
vtkImagePermute:X,Y,Z轴变换
vtkImageFlip:绕某轴旋转
代码如下:
#include "vtkImageGridSource.h"
#include "vtkPNGReader.h"
#include "vtkImageViewer.h"
#include "vtkImageBlend.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkImagePermute.h"
#include "vtkImageFlip.h"
#include "vtkDICOMImageReader.h"
void main()
{
vtkDICOMImageReader *pRead = vtkDICOMImageReader::New();
pRead->SetFileName("E:\\ExportedImages\\2\\8600033_000002_02_01.dcm");
pRead->Update();
vtkImagePermute *Permute = vtkImagePermute::New();
Permute->SetInputConnection(pRead->GetOutputPort());
Permute->SetFilteredAxes(1, 0, 2); // 实现 X轴与Y轴的变换
vtkImageFlip *pFlip = vtkImageFlip::New();
pFlip->SetInputConnection(Permute->GetOutputPort());
pFlip->SetFilteredAxes(0); //实现 绕X轴旋转
vtkImageViewer *pV = vtkImageViewer::New();
pV->SetColorLevel(1000);
pV->SetColorWindow(2000);
pV->SetInputConnection(pFlip->GetOutputPort());
pV->Render();
vtkRenderWindowInteractor *pInt = vtkRenderWindowInteractor::New();
pV->SetupInteractor(pInt);
pInt->Initialize();
pInt->Start();
pInt->Delete();
pV->Delete();
pFlip->Delete();
Permute->Delete();
pRead->Delete();
}
效果图: