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;
    }
相关推荐
无所谓จุ๊บ17 天前
VTK知识学习(54)- 交互与Widget(五)
学习·vtk
奇树谦2 个月前
VTK|显示三维图像的二维切片
c++·vtk·qt5·三维显示
mahuifa2 个月前
(40)VTK C++开发示例 ---集合
c++·vtk·cmake·3d开发
mahuifa2 个月前
(34)VTK C++开发示例 ---将图片映射到平面
c++·平面·3d·vtk·cmake
mahuifa2 个月前
(36)VTK C++开发示例 ---纹理贴图四边形
c++·vtk·cmake·贴图·3d开发
mahuifa2 个月前
(37)VTK C++开发示例 ---纹理地球
c++·vscode·vtk·3d地球
mahuifa2 个月前
(35)VTK C++开发示例 ---将图片映射到平面2
c++·vtk·cmake·3d开发
酬勤-人间道2 个月前
分享:VTK版本的选择 - WPF空域问题
vtk·wpf·空域
mahuifa2 个月前
(7)VTK C++开发示例 --- 使用交互器
c++·vtk·cmake·3d开发
mahuifa3 个月前
(2)VTK C++开发示例 --- 绘制多面锥体
c++·vtk·cmake·3d开发