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

22 篇文章 18 订阅

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();
}

 

 

JPG图片的读取可参考:VTK序列图像的读取[转][改] - vranger - 博客园  https://www.cnblogs.com/vranger/p/3821476.html点击打开链接

如果您觉得这篇博文有用,请访问我的个人站:http://www.stubbornhuang.com,更多博文干货等着您。

 

 

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HW140701

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值