VTK读取序列JPG图片MC算法进行三维重建

来源:互联网 发布:微商营销软件 编辑:程序博客网 时间:2024/06/06 00:04

VTK读取序列JPG图片用MC算法进行三维重建,JPG图片是用底层代码插值生成

#include <vtkRenderer.h>#include <vtkRenderWindow.h>#include <vtkRenderWindowInteractor.h>#include <vtkJPEGReader.h>#include <vtkMarchingCubes.h>#include <vtkStripper.h>#include <vtkPolyDataMapper.h>#include <vtkActor.h>#include <vtkProperty.h>#include <vtkOutlineFilter.h>#include <vtkSmartPointer.h>#include <vtkCamera.h>void 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<vtkJPEGReader>Reader=vtkSmartPointer<vtkJPEGReader>::New();Reader->SetDataScalarTypeToUnsignedChar();                Reader->SetFileDimensionality(3);Reader->SetFilePrefix("E:\\JPG\\rgb");    Reader->SetFileNameSliceSpacing(1);Reader->SetFilePattern("%s%d.jpg");                   Reader->SetDataExtent( 0, 200, 0, 400, 1,9);        Reader->SetDataSpacing(1,1,10);                Reader->Update();vtkSmartPointer<vtkMarchingCubes>marchingcube=vtkSmartPointer<vtkMarchingCubes>::New();marchingcube->SetInput((vtkDataSet *)Reader->GetOutput());//marchingcube->SetInputConnection(Reader->GetOutputPort());      //第二种读取数据的方法marchingcube->SetValue(0,200);  vtkSmartPointer<vtkStripper>Stripper=vtkSmartPointer<vtkStripper>::New();Stripper->SetInput( marchingcube->GetOutput()); vtkSmartPointer<vtkPolyDataMapper>polyMapper=vtkSmartPointer<vtkPolyDataMapper>::New();polyMapper->SetInput(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();}


0 0
原创粉丝点击