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;
    }
相关推荐
CAE虚拟与现实10 天前
五一假期闲来无事,来个前段、后端的说明吧
前端·后端·vtk·three.js·前后端
vegetablesssss12 天前
vtk镜像图
c++·qt·vtk
vegetablesssss13 天前
VTK切割图
c++·qt·vtk
vegetablesssss15 天前
vtkCamera
qt·vtk
Tianwen_Burning3 个月前
vtk <vtkRenderWindowInteractor>交互器
vtk
Dave.B3 个月前
vtkPolyDataConnectivityFilter 实用指南
算法·vtk
Dave.B3 个月前
【VTK核心类详解:vtkClipPolyData 多边形数据智能裁剪工具】
vtk
Dave.B4 个月前
:vtkBooleanOperationPolyDataFilter 布尔运算全解析
算法·vtk
明洞日记4 个月前
【VTK手册036】网格拓扑简化工具:vtkCleanPolyData 使用指南
c++·图像处理·ai·vtk·图形渲染
明洞日记4 个月前
【VTK手册034】 vtkGeometryFilter 深度解析:高性能几何提取与转换专家
c++·图像处理·算法·ai·vtk·图形渲染