#include "vtkDICOMImageReader.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkRenderer.h"
#include "vtkRenderWindow.h"
#include "vtkMarchingCubes.h"
#include "vtkStripper.h"
#include "vtkActor.h"
#include "vtkPolyDataMapper.h"
#include "vtkProperty.h"
#include "vtkCamera.h"
#include "vtkBoxWidget.h"
#include <iostream>
int main()
{
vtkDICOMImageReader
*reader
= vtkDICOMImageReader
::New();
reader
->SetDataByteOrderToLittleEndian();
reader
->SetDirectoryName("D://DicomImages/SE0/");
reader
->SetDataSpacing(1.0,1.0,0.48);
vtkMarchingCubes
*boneExtractor
= vtkMarchingCubes
::New();
boneExtractor
->SetInputConnection(reader
->GetOutputPort());
boneExtractor
->SetValue(0,-400);
vtkStripper
*boneStripper
= vtkStripper
::New();
boneStripper
->SetInputConnection(boneExtractor
->GetOutputPort());
vtkPolyDataMapper
*boneMapper
= vtkPolyDataMapper
::New();
boneMapper
->SetInput(boneStripper
->GetOutput());
boneMapper
->ScalarVisibilityOff();
vtkActor
*bone
= vtkActor
::New();
bone
->SetMapper(boneMapper
);
bone
->GetProperty()->SetDiffuseColor(1,1,1);
bone
->GetProperty()->SetSpecular(.3);
bone
->GetProperty()->SetSpecularPower(40);
bone
->GetProperty()->SetOpacity(0.2) ;
vtkRenderer
*aRenderer
= vtkRenderer
::New();
vtkRenderWindow
*renWin
= vtkRenderWindow
::New();
renWin
->AddRenderer(aRenderer
);
renWin
->SetSize(600,600) ;
vtkRenderWindowInteractor
*iren
= vtkRenderWindowInteractor
::New();
iren
->SetRenderWindow(renWin
);
vtkCamera
*aCamera
= vtkCamera
::New();
aCamera
->SetViewUp(0,0,-1);
aCamera
->SetPosition(0,1,0);
aCamera
->SetFocalPoint(0,0,0);
aRenderer
->AddActor(bone
);
aRenderer
->SetActiveCamera(aCamera
);
aRenderer
->ResetCamera();
aCamera
->Dolly(1.5);
aRenderer
->SetBackground(0,0,0);
aRenderer
->ResetCameraClippingRange();
vtkBoxWidget
*boxWidget
= vtkBoxWidget
::New();
iren
->Initialize();
iren
->Start();
reader
->Delete();
iren
->Delete();
return 0;
}
效果:
转载请注明原文地址:https://tech.qufami.com/read-25188.html