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()
相关推荐
Pyeako3 小时前
深度学习--卷积神经网络(下)
人工智能·python·深度学习·卷积神经网络·数据增强·保存最优模型·数据预处理dataset
OPEN-Source3 小时前
大模型实战:搭建一张“看得懂”的大模型应用可观测看板
人工智能·python·langchain·rag·deepseek
廖圣平3 小时前
从零开始,福袋直播间脚本研究【七】《添加分组和比特浏览器》
python
B站_计算机毕业设计之家3 小时前
豆瓣电影数据可视化分析系统 | Python Flask框架 requests Echarts 大数据 人工智能 毕业设计源码(建议收藏)✅
大数据·python·机器学习·数据挖掘·flask·毕业设计·echarts
mr_LuoWei20093 小时前
python工具:python代码知识库笔记
数据库·python
weixin_395448913 小时前
cursor日志
人工智能·python·机器学习
天天爱吃肉82184 小时前
【跨界封神|周杰伦×王传福(陶晶莹主持):音乐创作与新能源NVH测试,底层逻辑竟完全同源!(新人必看入行指南)】
python·嵌入式硬件·算法·汽车
岱宗夫up4 小时前
Python 数据分析入门
开发语言·python·数据分析
码界筑梦坊4 小时前
325-基于Python的校园卡消费行为数据可视化分析系统
开发语言·python·信息可视化·django·毕业设计
asheuojj4 小时前
2026年GEO优化获客效果评估指南:如何精准衡量TOP5关
大数据·人工智能·python