vtkConnectivityFilter提取连通区域中的问题

  1. 直接使用vtkConnectivityFilter提取连通区域,渲染上没问题,但是打印出polydata中的点数,发现跟原始数据是一致的。

    复制代码
     for (int i = 0; i < numRegions; ++i)
     {
     	vtkSmartPointer<vtkConnectivityFilter> connectivityFilter = vtkSmartPointer<vtkConnectivityFilter>::New();
     	connectivityFilter->SetInputData(polyData);
     	connectivityFilter->SetExtractionModeToSpecifiedRegions();
     	connectivityFilter->InitializeSpecifiedRegionList();
     	connectivityFilter->AddSpecifiedRegion(i);
     	connectivityFilter->Update();
     	cout << connectivityFilter->GetOutput()->GetNumberOfPoints() << endl;
     }
  1. 正确的做法是后街一个vtkCleanPolyData过滤器

    复制代码
     for (int i = 0; i < numRegions; ++i)
    {
    	vtkSmartPointer<vtkConnectivityFilter> connectivityFilter = vtkSmartPointer<vtkConnectivityFilter>::New();
    	connectivityFilter->SetInputData(polyData);
    	connectivityFilter->SetExtractionModeToSpecifiedRegions();
    	connectivityFilter->InitializeSpecifiedRegionList();
    	connectivityFilter->AddSpecifiedRegion(i);
    	connectivityFilter->Update();
    	
    	// 使用vtkCleanPolyData删除孤立点
    	vtkSmartPointer<vtkCleanPolyData> cleanPolyData = vtkSmartPointer<vtkCleanPolyData>::New();
    	cleanPolyData->SetInputData(connectivityFilter->GetOutput());
    	cleanPolyData->Update();
    	
    	cout << cleanPolyData->GetOutput()->GetNumberOfPoints() << endl;
    }
相关推荐
任小七13 天前
VTK-8.2.0源码编译和初步使用(Cmake+VS2015+Qt5.14.2)
qt·vtk·vs
川谷_16 天前
二、vtkCommand的使用
vtk
磊磊cpp1 个月前
【VTK】三种面切片数据 加载模型 scalars设置颜色透明度 加载raw 医学数据
qt·vtk
恋恋西风1 个月前
vtk 3D坐标标尺应用 3D 刻度尺
python·3d·vtk·pyqt
恋恋西风1 个月前
CT dicom 去除床板 去除床位,检查床去除
python·vtk·dicom·去床板
omage1 个月前
cornerstone3D学习笔记-MPR
笔记·学习·vtk·dicom·mpr
捕鲸叉2 个月前
第05章 17 Contour 过滤器介绍与例子
信息可视化·vtk
捕鲸叉2 个月前
第05章 08 绘制脑部体绘制图的阈值等值面
算法·信息可视化·vtk
捕鲸叉2 个月前
第05章 11 动量剖面可视化代码一则
开发语言·c++·算法·信息可视化·vtk
捕鲸叉2 个月前
第05章 09 使用Lookup绘制地形数据高程着色图
算法·信息可视化·vtk