ConnectivityFilter数据集中分离的区域或连通分量

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程------逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①vtkDelaunay3D模型生成,②模型连通性分析

二:代码及注释

python 复制代码
import vtkmodules.vtkRenderingOpenGL2
from vtkmodules.vtkCommonColor import vtkNamedColors
from vtkmodules.vtkFiltersCore import vtkAppendFilter, vtkConnectivityFilter, vtkDelaunay3D
from vtkmodules.vtkFiltersSources import vtkSphereSource
from vtkmodules.vtkRenderingCore import (
    vtkActor,
    vtkDataSetMapper,
    vtkRenderWindow,
    vtkRenderWindowInteractor,
    vtkRenderer
)


def main():
    colors = vtkNamedColors()

    sphereSource1 = vtkSphereSource()
    sphereSource1.Update()

    """
    vtkDelaunay3D  用于执行 三维 Delaunay 三角剖分(或称为三维 Delaunay 网格划分)的一个类
    主要作用是:根据给定的点集,生成一个 Delaunay 三维网格,即将这些点组织成一个由三角形、四面体等构成的多面体网格
    这里的作用类似于用另外一种数据形式去表示这个球体
    """
    delaunay1 = vtkDelaunay3D()
    # delaunay1.SetInputData(sphereSource1.GetOutput())
    delaunay1.SetInputConnection(sphereSource1.GetOutputPort())
    delaunay1.Update()

    sphereSource2 = vtkSphereSource()
    sphereSource2.SetCenter(5, 0, 0)
    delaunay2 = vtkDelaunay3D()
    # delaunay2.SetInputData(sphereSource2.GetOutput())
    delaunay2.SetInputConnection(sphereSource2.GetOutputPort())
    delaunay2.Update()

    appendFilter = vtkAppendFilter()
    appendFilter.AddInputConnection(delaunay1.GetOutputPort())
    appendFilter.AddInputConnection(delaunay2.GetOutputPort())
    appendFilter.Update()

    """
    vtkConnectivityFilter   拓扑连通性分析过滤器
    根据几何或拓扑连通性,把输入数据  划分成若干个连通区域(connected regions),并且可以提取其中的一个或多个区域
    """
    connectivityFilter = vtkConnectivityFilter()
    connectivityFilter.SetInputConnection(appendFilter.GetOutputPort())
    """
    SetExtractionModeToAllRegions 提取所有的连通域
    """
    connectivityFilter.SetExtractionModeToAllRegions()
    """
    ColorRegionsOn  
    给不同的连通区域分配不同的 RegionId 标量值
    并把它作为输出数据中的一个数组附加到每个单元(Cell)的属性上
    """
    connectivityFilter.ColorRegionsOn()
    connectivityFilter.Update()

    mapper = vtkDataSetMapper()
    mapper.SetInputConnection(connectivityFilter.GetOutputPort())
    mapper.Update()

    actor = vtkActor()
    actor.SetMapper(mapper)

    renderer = vtkRenderer()
    renderer.AddActor(actor)

    renWindow = vtkRenderWindow()
    renWindow.AddRenderer(renderer)
    iren = vtkRenderWindowInteractor()
    iren.SetRenderWindow(renWindow)

    iren.Initialize()
    renWindow.Render()
    renWindow.SetWindowName('ConnectivityFilter')
    renderer.SetBackground(colors.GetColor3d('deep_ochre'))
    renderer.GetActiveCamera().Zoom(0.9)
    renWindow.Render()
    iren.Start()



if __name__ == '__main__':
    main()
相关推荐
童园管理札记2 分钟前
从政策驱动到课堂落地:2026年“人工智能+教育”全景解读与技术实践指南
人工智能·python·深度学习·职场和发展·学习方法
陈年老古董3 分钟前
微博情感分析项目学习笔记
笔记·python·学习·机器学习·项目
10mAh5 分钟前
【Python】从零开始做一个重复文件查找工具——找出改名副本,生成核对报告
python
用户0332126663677 分钟前
使用 Python 轻松合并多个 PowerPoint 文件【代码详解】
python
Xiu Yan20 分钟前
Python 数据分析:Pandas DataFrame 零基础入门教程
python·jupyter·pycharm·numpy·pandas
别动我齐刘海26 分钟前
ROS2 Jazzy + C++ 实战路线——ros2_control
c++·人工智能·python·opencv·机器学习·机器人·github
把头塞进显示器1 小时前
电商平台-测试报告
python·selenium·pytest
ShyanZh1 小时前
【Python3基础】01-Python 环境与开发工具
python
醇氧1 小时前
Git 合并冲突与`__pycache__` 的恩怨情仇
python·numpy·fastapi
ShyanZh1 小时前
【Python3基础】02-输入输出与程序运行
python