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()
相关推荐
疯狂踩坑人9 分钟前
【Python版 2026 从零学Langchain 1.x】(二)结构化输出和工具调用
后端·python·langchain
HDO清风24 分钟前
CASIA-HWDB2.x 数据集DGRL文件解析(python)
开发语言·人工智能·pytorch·python·目标检测·计算机视觉·restful
weixin_4997715526 分钟前
Python上下文管理器(with语句)的原理与实践
jvm·数据库·python
weixin_4521595529 分钟前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
多米Domi01135 分钟前
0x3f 第48天 面向实习的八股背诵第五天 + 堆一题 背了JUC的题,java.util.Concurrency
开发语言·数据结构·python·算法·leetcode·面试
深蓝海拓41 分钟前
PySide6从0开始学习的笔记(二十六) 重写Qt窗口对象的事件(QEvent)处理方法
笔记·python·qt·学习·pyqt
纠结哥_Shrek41 分钟前
外贸选品工程师的工作流程和方法论
python·机器学习
小汤圆不甜不要钱43 分钟前
「Datawhale」RAG技术全栈指南 Task 5
python·llm·rag
A懿轩A1 小时前
【Java 基础编程】Java 变量与八大基本数据类型详解:从声明到类型转换,零基础也能看懂
java·开发语言·python