DisplacementPlot 结构动态可视化

一:主要的知识点

1、说明

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

2、知识点纪要

本段代码主要涉及的有①vtkWarpVector 根据向量场对几何体进行形变


二:代码及注释

import vtkmodules.vtkInteractionStyle import vtkmodules.vtkRenderingOpenGL2 from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkIOLegacy import vtkPolyDataReader from vtkmodules.vtkFiltersGeneral import vtkWarpVector from vtkmodules.vtkFiltersCore import vtkPolyDataNormals, vtkVectorDot from vtkmodules.vtkCommonCore import vtkLookupTable from vtkmodules.vtkRenderingCore import vtkColorTransferFunction, vtkActor, vtkDataSetMapper, vtkRenderer, \ vtkRenderWindow, vtkRenderWindowInteractor def main(): colors = vtkNamedColors() file_name, color_scheme = "Data/plate.vtk", 0 plate = vtkPolyDataReader() plate.SetFileName(file_name) plate.SetVectorsName("mode8") # 指定从输入的 .vtk 文件中读取哪个数据数组作为主要的矢量数据 plate.Update() """ vtkWarpVector 根据向量场对几何体进行形变 """ warp = vtkWarpVector() warp.SetInputConnection(plate.GetOutputPort()) warp.SetScaleFactor(0.5) normals = vtkPolyDataNormals() normals.SetInputConnection(warp.GetOutputPort()) """ vtkVectorDot 主要用于计算两个向量场之间的点积,并把结果作为一个新的标量场输出 """ color = vtkVectorDot() # 在这里只有一个输入,因此计算的是法向矢量与活动矢量之间的点积 color.SetInputConnection(normals.GetOutputPort()) lut = vtkLookupTable() MakeLUT(color_scheme, lut) plateMapper = vtkDataSetMapper() plateMapper.SetInputConnection(color.GetOutputPort()) plateMapper.SetLookupTable(lut) plateMapper.SetScalarRange(-1, 1) plateActor = vtkActor() plateActor.SetMapper(plateMapper) ren = vtkRenderer() renWin = vtkRenderWindow() renWin.AddRenderer(ren) iren = vtkRenderWindowInteractor() iren.SetRenderWindow(renWin) ren.AddActor(plateActor) ren.SetBackground(colors.GetColor3d("Wheat")) renWin.SetSize(512, 512) renWin.SetWindowName('DisplacementPlot') ren.GetActiveCamera().SetPosition(13.3991, 14.0764, 9.97787) ren.GetActiveCamera().SetFocalPoint(1.50437, 0.481517, 4.52992) ren.GetActiveCamera().SetViewAngle(30) ren.GetActiveCamera().SetViewUp(- 0.120861, 0.458556, - 0.880408) ren.GetActiveCamera().SetClippingRange(12.5724, 26.8374) renWin.Render() iren.Start() def MakeLUT(colorScheme, lut): nc = 256 ctf = vtkColorTransferFunction() if colorScheme == 1: ctf.SetColorSpaceToDiverging() ctf.AddRGBPoint(0.0, 0.085, 0.532, 0.201) ctf.AddRGBPoint(0.5, 0.865, 0.865, 0.865) ctf.AddRGBPoint(1.0, 0.436, 0.308, 0.631) lut.SetNumberOfTableValues(nc) lut.Build() for i in range(0, nc): rgb = list(ctf.GetColor(float(i) / nc)) rgb.append(1) lut.SetTableValue(i, *rgb) elif colorScheme == 2: nc2 = nc / 2.0 lut.SetNumberOfColors(nc) lut.Build() for i in range(0, int(nc2)): # White to black. v = (nc2 - i) / nc2 lut.SetTableValue(i, v, v, v, 1) for i in range(int(nc2), nc): # Black to white. v = (i - nc2) / nc2 lut.SetTableValue(i, v, v, v, 1) else: ctf.SetColorSpaceToDiverging() ctf.AddRGBPoint(0.0, 0.230, 0.299, 0.754) ctf.AddRGBPoint(1.0, 0.706, 0.016, 0.150) lut.SetNumberOfTableValues(nc) lut.Build() for i in range(0, nc): rgb = list(ctf.GetColor(float(i) / nc)) rgb.append(1.0) lut.SetTableValue(i, *rgb) if __name__ == '__main__': main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1146892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ExponentialCosine 复杂的二维数学函数映射为3D曲面

一:主要的知识点 1、说明 本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客 2、知识点纪要 本段代码主要涉及的有①vtkWarpScalar根据标量值沿着发现方向进行…

STC89C52控制蜂鸣器演奏乐曲完整指南

用STC89C52让蜂鸣器“唱”出《小星星》——从原理到实战的完整实现你有没有试过让一块最普通的51单片机,带着一个几毛钱的蜂鸣器,把《小星星》从头到尾演奏一遍?听起来像魔法,其实并不难。这不仅是电子爱好者入门时的经典项目&…

ResNet18实战:教育智能教具识别系统

ResNet18实战:教育智能教具识别系统 1. 引言:通用物体识别与ResNet-18的工程价值 在智能教育硬件快速发展的今天,如何让教学设备“看懂”学生手中的实物,成为提升互动体验的关键。例如,在幼儿认知课堂中,…

ResNet18优化实战:量化加速推理的完整步骤

ResNet18优化实战:量化加速推理的完整步骤 1. 背景与挑战:通用物体识别中的效率瓶颈 在边缘计算和终端部署场景中,深度学习模型的推理速度与资源消耗成为决定用户体验的关键因素。尽管ResNet-18作为轻量级残差网络已被广泛用于图像分类任务…

通俗解释波形发生器设计中的频率控制

波形发生器设计中的频率控制:从原理到实战你有没有想过,当你按下函数发生器上的“1kHz正弦波”按钮时,它是如何精准地输出一个稳定、干净的信号?背后其实是一套精密的数字控制系统在默默工作。而其中最关键的一环,就是…

ResNet18实战:智能监控系统物体识别部署案例

ResNet18实战:智能监控系统物体识别部署案例 1. 引言:通用物体识别的工程价值与ResNet-18的定位 在智能监控、安防预警、行为分析等实际场景中,通用物体识别是构建视觉感知能力的基础环节。传统方案依赖人工规则或轻量级分类器,…

ResNet18实战:构建高稳定性识别服务的关键

ResNet18实战:构建高稳定性识别服务的关键 1. 通用物体识别与ResNet-18的工程价值 在当前AI应用快速落地的背景下,通用图像分类已成为智能系统感知世界的基础能力。从智能家居到内容审核,从辅助驾驶到AR交互,精准、稳定、低延迟…

ResNet18实战教程:服装分类系统开发

ResNet18实战教程:服装分类系统开发 1. 引言 1.1 学习目标 本文将带你从零开始,使用 ResNet-18 模型构建一个完整的服装图像分类系统。你将掌握: - 如何加载并微调预训练的 ResNet-18 模型 - 构建数据管道与图像增强策略 - 训练流程设计与…

ResNet18应用解析:智能交通管理系统

ResNet18应用解析:智能交通管理系统 1. 技术背景与应用场景 随着城市化进程的加速,交通管理正面临前所未有的挑战。传统的监控系统依赖人工值守和规则化检测,难以应对复杂多变的交通场景。近年来,深度学习技术的突破为智能交通系…

ResNet18性能测试:CPU环境下的推理速度对比

ResNet18性能测试:CPU环境下的推理速度对比 1. 背景与应用场景 在边缘计算、嵌入式设备和资源受限的生产环境中,深度学习模型的CPU推理性能成为决定其能否落地的关键因素。尽管GPU在训练和高并发推理中表现优异,但CPU因其普适性、低成本和低…

多层板PCB生产流程实例分析:常见缺陷及改善措施

多层板PCB生产全流程实战解析:从缺陷溯源到工艺优化你有没有遇到过这样的情况?一块设计完美的16层服务器主板,在回流焊后突然出现间歇性通信故障。FA(失效分析)拆解发现,问题竟出在第8层一个不起眼的微孔—…

ResNet18部署详解:Kubernetes集群部署方案

ResNet18部署详解:Kubernetes集群部署方案 1. 背景与技术选型 1.1 通用物体识别的工程需求 在当前AI服务快速落地的背景下,通用图像分类作为计算机视觉的基础能力,广泛应用于内容审核、智能相册、AR交互和自动化标注等场景。其中&#xff…

ResNet18应用案例:智能垃圾分类系统

ResNet18应用案例:智能垃圾分类系统 1. 引言:通用物体识别与ResNet-18的工程价值 在智能城市和环保科技快速发展的背景下,自动化垃圾分类系统正从实验室走向实际应用场景。传统依赖人工分拣或规则匹配的方式效率低、成本高,而基…

ResNet18性能测试:批量处理能力评测

ResNet18性能测试:批量处理能力评测 1. 引言:通用物体识别中的ResNet-18价值定位 在当前AI视觉应用广泛落地的背景下,高效、稳定、可离线运行的图像分类模型成为边缘计算与本地化部署的关键需求。ResNet-18作为深度残差网络(Dee…

ResNet18入门指南:零代码实现物体识别WebUI

ResNet18入门指南:零代码实现物体识别WebUI 1. 引言:走进通用图像分类的基石——ResNet18 在计算机视觉领域,图像分类是许多高级任务(如目标检测、图像描述生成)的基础。而 ResNet18 作为深度残差网络家族中最轻量级…

ResNet18应用实例:零售货架商品识别系统

ResNet18应用实例:零售货架商品识别系统 1. 引言:通用物体识别与ResNet-18的工程价值 在智能零售、自动化巡检和视觉监控等场景中,快速、稳定、低成本的通用物体识别能力是实现智能化升级的关键基础。传统方案依赖云API调用或复杂部署流程&…

ResNet18代码实例:Python调用图像分类API详细教程

ResNet18代码实例:Python调用图像分类API详细教程 1. 引言 1.1 通用物体识别的现实需求 在智能安防、内容审核、自动驾驶和智能家居等场景中,快速准确地识别图像中的物体是AI系统的基础能力。尽管当前已有大量深度学习模型可供选择,但许多…

ResNet18性能优化:CPU推理速度提升5倍的详细步骤

ResNet18性能优化:CPU推理速度提升5倍的详细步骤 1. 背景与挑战:通用物体识别中的效率瓶颈 在边缘计算和本地化部署场景中,深度学习模型的推理效率直接决定了用户体验和系统可用性。尽管ResNet-18作为轻量级图像分类模型被广泛使用&#xf…

无源蜂鸣器驱动电路工作原理深度剖析

无源蜂鸣器驱动电路:从原理到实战的完整指南你有没有遇到过这样的场景?系统报警了,蜂鸣器却“哑火”;或者声音忽大忽小、频率不准,甚至烧掉了三极管?别急——问题很可能出在那个看似简单的无源蜂鸣器驱动电…

超详细版:并行计算加速科学仿真的实战案例

并行计算如何让科学仿真快如闪电?一个热传导仿真的实战拆解你有没有过这样的经历:跑一次仿真,等了整整一晚上,结果早上一看——收敛失败,还得重来?在科研和工程领域,这种“算力焦虑”太常见了。…