vtkImageData to vtkPolyData (二)

25 篇文章 1 订阅
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle)
VTK_MODULE_INIT(vtkRenderingFreeType)
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2)
#include <vtkActor.h>
#include <vtkLookupTable.h>
#include <vtkPolyDataMapper.h>
#include <vtkProperty.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSmartPointer.h>
#include <vtkImageToPolyDataFilter.h>
#include <vtkImageQuantizeRGBToIndex.h>
#include <vtkCamera.h>
#include <vtkPNGReader.h>
#include <vtkTriangleFilter.h>
#include <vtkAppendPolyData.h>

int main(int argc, char *argv[])
{
    QString path = "D:/tmp1/4698AF6023D53AE4A616FEA9BDF581A54882A443/mask/1/肺/SHENG_0086.png";

    vtkNew<vtkPNGReader> reader;
    reader->SetFileName(path.toLocal8Bit().data());

    vtkNew<vtkImageQuantizeRGBToIndex> quant;
    quant->SetInputConnection(reader->GetOutputPort());
    quant->SetNumberOfColors(32);

    vtkNew<vtkImageToPolyDataFilter> i2pd;
//    i2pd->SetInputConnection(quant->GetOutputPort());
//    i2pd->SetLookupTable(quant->GetLookupTable());
//    i2pd->SetColorModeToLUT();
    i2pd->SetInputConnection(reader->GetOutputPort());
    i2pd->SetOutputStyleToPolygonalize();
    i2pd->SetError(0);
    i2pd->DecimationOn();
    i2pd->SetDecimationError(0.0);
    i2pd->SetSubImageSize(25);

    vtkNew<vtkTriangleFilter> tf;
    tf->SetInputConnection(i2pd->GetOutputPort());

    vtkNew<vtkPolyDataMapper> mapper;
//    mapper->SetInputConnection(tf->GetOutputPort());
    mapper->SetInputConnection(i2pd->GetOutputPort());

    vtkNew<vtkActor> actor;
    actor->SetMapper(mapper);
//    actor->GetProperty()->SetRepresentationToPoints();//点
//    actor->GetProperty()->SetRepresentationToWireframe();//线框
    actor->GetProperty()->SetRepresentationToSurface();//面
    vtkNew<vtkRenderer> renderer;
    vtkNew<vtkRenderWindow> renderWindow;
    renderWindow->AddRenderer(renderer);
    vtkNew<vtkRenderWindowInteractor> interactor;
    interactor->SetRenderWindow(renderWindow);

    renderer->AddActor(actor);

    renderWindow->SetSize(512, 512);

    renderWindow->Render();
    interactor->Initialize();
    interactor->Start();

    return EXIT_SUCCESS;
}

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值