//用到的图512*512,一共1438帧,每一帧命名ct0000.bmp-ct1437.bmp,是0和255的二值图,参数咋样才对,8位的
#define vtkRenderingCore_AUTOINIT 3(vtkInteractionStyle,vtkRenderingFreeType,vtkRenderingOpenGL2)
#define vtkRenderingVolume_AUTOINIT 1(vtkRenderingVolumeOpenGL2)
#include "D:\maize_CT\Read_filter\Imgproc.h"
#include "vtkBMPReader.h"
#include "vtkSmartPointer.h"
#include <vtkImageDilateErode3D.h>
#include <vtkImageActor.h>
#include <vtkImageMapper3D.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderer.h>
#include <vtkNamedColors.h>
#include <vtkInteractorStyleImage.h>
#include <vtkMarchingCubes.h>
#include <vtkImageAppend.h>
#include <vtkImageViewer2.h>
#include <vtkMarchingCubes.h>
#include <vtkStripper.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkOutlineFilter.h>
#include <vtkCamera.h>
int main() {
vtkSmartPointer<vtkRenderer>ren = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow>renWin = vtkSmartPointer<vtkRenderWindow>::New();
renWin->AddRenderer(ren);
vtkSmartPointer<vtkRenderWindowInteractor>iren = vtkSmartPointer<vtkRenderWindowInteractor>::New();
iren->SetRenderWindow(renWin);
//读取序列图
vtkSmartPointer<vtkBMPReader>Reader = vtkSmartPointer<vtkBMPReader>::New();
Reader->SetDataScalarTypeToUnsignedChar();
Reader->SetFileDimensionality(3);
Reader->SetFilePrefix("E:\\Juno_segmentation\\00004641\\Maxcontour\\ct");
Reader->SetFileNameSliceSpacing(1);
Reader->SetFilePattern("%s%04d.bmp");
Reader->SetDataExtent(0, 511, 0, 511, 0, 1437);
Reader->SetDataSpacing(1, 1, 10);
Reader->Update();
vtkSmartPointer<vtkMarchingCubes>marchingcube = vtkSmartPointer<vtkMarchingCubes>::New();
marchingcube->SetInputData((vtkDataSet*)Reader->GetOutput());
//marchingcube->SetInputConnection(Reader->GetOutputPort()); //第二种读取数据的方法
marchingcube->SetValue(0, 255);
vtkSmartPointer<vtkStripper>Stripper = vtkSmartPointer<vtkStripper>::New();
Stripper->SetInputData(marchingcube->GetOutput());
vtkSmartPointer<vtkPolyDataMapper>polyMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
polyMapper->SetInputData(Stripper->GetOutput());
polyMapper->ScalarVisibilityOff();
vtkSmartPointer<vtkActor>actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(polyMapper);
actor->GetProperty()->SetDiffuseColor(1, 0.19, 0.15);
actor->GetProperty()->SetSpecular(0.1);
actor->GetProperty()->SetSpecularPower(10);
actor->GetProperty()->SetColor(1, 0, 0);
vtkSmartPointer<vtkOutlineFilter>outlinefilter = vtkSmartPointer<vtkOutlineFilter>::New();
outlinefilter->SetInputConnection(Reader->GetOutputPort());
vtkSmartPointer<vtkPolyDataMapper>outlineMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
outlineMapper->SetInputConnection(outlinefilter->GetOutputPort());
vtkSmartPointer<vtkActor>outlineActor = vtkSmartPointer<vtkActor>::New();
outlineActor->SetMapper(outlineMapper);
outlineActor->GetProperty()->SetColor(0, 0, 0);
vtkSmartPointer<vtkCamera>aCamera = vtkSmartPointer<vtkCamera>::New();
aCamera->SetViewUp(0, 0, -1);
aCamera->SetPosition(0, 1, 0);
aCamera->SetFocalPoint(0, 0, 0);
aCamera->ComputeViewPlaneNormal();
ren->AddActor(actor);
ren->AddActor(outlineActor);
ren->SetActiveCamera(aCamera);
ren->ResetCamera();
aCamera->Dolly(1.5);
ren->SetBackground(1, 1, 1);
renWin->SetSize(640, 640);
ren->ResetCameraClippingRange();
iren->Initialize();
iren->Start();
//形态学开操作
/*vtkNew<vtkImageDilateErode3D> dilateErode;
dilateErode->SetInputConnection(Reader->GetOutputPort());
dilateErode->SetDilateValue(0);
dilateErode->SetErodeValue(255);
dilateErode->SetKernelSize(15, 15, 3);
dilateErode->ReleaseDataFlagOff();*/
return EXIT_SUCCESS;
}
可能是具体的数据有问题导致的,可以贴下报错方便分析
可以贴下报错方便分析