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;
    }
相关推荐
beibeix20153 天前
VTK 渲染全流程与 OpenGL 上下文适配
vtk
把我格子衫拿来15 天前
VTK 9.5 与 Qt 6 联合开发:从嵌入三维窗口到可维护的桌面架构
c++·python·qt·vtk·三维可视化
把我格子衫拿来15 天前
VTK 与 Qt 的 CMake 工程怎么组织?模块、工具链与二进制兼容排错
c++·qt·vtk·cmake·工程实践
把我格子衫拿来16 天前
鼠标点到哪里才算选中?Qt 与 VTK 的拾取坐标、DPI 与体素定位
python·qt·vtk·坐标变换·三维交互
把我格子衫拿来16 天前
VTK 体绘制入门到排错:传递函数、采样距离与透明度的关系
python·vtk·可视化·医学影像·体绘制
走好每一步5 个月前
12、VTK用X、Z平面去切割一个圆锥
平面·vtk·三维图像
走好每一步5 个月前
11、VTK重要数学知识:平面和法向量
平面·vtk·三维图像
走好每一步5 个月前
5、VTK刚体变换
qt·vtk·三维图像
走好每一步5 个月前
4、VDK读取xml模型数据
vtk·三维图像
走好每一步5 个月前
2、VDK 使用QVTKOpenGLNativeWidget嵌入到QT窗体中
qt·vtk·三维图像