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()
相关推荐
qq_196976172 小时前
python的sql解析库-sqlparse
数据库·python·sql
:mnong2 小时前
Superpowers 项目设计分析
java·c语言·c++·python·c#·php·skills
a里啊里啊2 小时前
测试开发面试题
开发语言·chrome·python·xpath
豆沙糕2 小时前
Python异步编程从入门到实战:结合RAG流式回答全解析
开发语言·python·面试
乘凉~3 小时前
【VideoCaptioner】开源音视频字幕自动识别工具
python
重生之我要成为代码大佬3 小时前
HuggingFace生态实战:从模型应用到高效微调
人工智能·python·大模型·huggingface·模型微调
爱睡懒觉的焦糖玛奇朵3 小时前
【工业级落地算法之人员摔倒检测算法详解】
人工智能·python·深度学习·神经网络·算法·yolo·目标检测
chushiyunen3 小时前
python实现skip-gram(跳词)示例
开发语言·python
Rabbit_QL4 小时前
sklearn Pipeline:特征工程和建模流水线
人工智能·python·sklearn
MoRanzhi12034 小时前
scikit-learn Lasso回归算法详解
python·机器学习·回归·scikit-learn·正则化·l1·lasso