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()
相关推荐
zone773920 小时前
001:简单 RAG 入门
后端·python·面试
F_Quant20 小时前
🚀 Python打包踩坑指南:彻底解决 Nuitka --onefile 配置文件丢失与重启报错问题
python·操作系统
允许部分打工人先富起来1 天前
在node项目中执行python脚本
前端·python·node.js
IVEN_1 天前
Python OpenCV: RGB三色识别的最佳工程实践
python·opencv
haosend1 天前
AI时代,传统网络运维人员的转型指南
python·数据网络·网络自动化
曲幽1 天前
不止于JWT:用FastAPI的Depends实现细粒度权限控制
python·fastapi·web·jwt·rbac·permission·depends·abac
IVEN_2 天前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang2 天前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
AI攻城狮2 天前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
千寻girling2 天前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python