当前位置: 首页 > news >正文

VTK笔记- 3D Widget类 vtkSplineWidget 样条部件

vtk3DWidget

  vtk3DWidget是用于3D交互观察器的基类,也就是各种3D小部件类的基类,主要是在三维渲染场景中生成一个可以用于控制数据的可视化实体,比如点,线段(曲线)、平面、球体、包围盒(线框)等

 这些3D小部件在场景中表示它们自己,并且具有与它们相关联的特殊回调,允许对小部件进行交互式操作。特别是,vtk3DWidget与其抽象超类vtkInteractorObserver之间的区别在于vtk3DWidget被“放置”在3D空间中。vtkInteractorObservers 不知道它们放在哪里,也可能根本不存在于3D空间中。3D小部件还提供辅助功能,如生成转换、创建polydata(用于播种流线、探测等)或创建隐式函数
 

part2: vtkSplineWidget

vtkSplineWidget是拟合样条的显示部件,可以当作曲线长度测量工具。也可以用于标注;

牙弓曲线我们用到了vtkSplineWidget,曲面提取用到了vtkProbeFilter.在这个功能中主要是根据牙弓线的位置,获取线上的点,
然后按照z轴的方向,按照原图像的z轴上的spacing,创建平面,最后用vtkProbeFilter去切源数据。获得的数据是一个曲面,
为了更好的观看,我们还要进行展平。所以我们需要创建一个imagedata.至此,我们就可以获得CPR。
 
  

Part3: code

import vtk
from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor
from PyQt5 import QtWidgetsclass VTKSplineWidgetDemo(QtWidgets.QMainWindow):def __init__(self, parent=None):super(VTKSplineWidgetDemo, self).__init__(parent)# 设置主窗口self.setWindowTitle("PyQt + VTK SplineWidget Example")self.resize(800, 600)# 创建 VTK 渲染窗口self.vtk_widget = QVTKRenderWindowInteractor(self)self.setCentralWidget(self.vtk_widget)# 初始化 VTK 渲染器和窗口self.renderer = vtk.vtkRenderer()self.vtk_widget.GetRenderWindow().AddRenderer(self.renderer)# 创建 vtkSplineWidgetself.spline_widget = vtk.vtkSplineWidget()self.spline_widget.SetInteractor(self.vtk_widget.GetRenderWindow().GetInteractor())self.spline_widget.SetCurrentRenderer(self.renderer)self.spline_widget.On()  # 启用 SplineWidget# 设置回调函数以获取样条曲线self.spline_widget.AddObserver("InteractionEvent", self.on_spline_interaction)# 设置背景颜色并启动self.renderer.SetBackground(0.2, 0.3, 0.4)self.vtk_widget.Initialize()self.vtk_widget.Start()def on_spline_interaction(self, obj, event):"""当用户交互时更新样条曲线"""# 获取样条曲线的点points = obj.GetNumberOfHandles()if points > 0:print("Spline Points:")for i in range(points):handle = obj.GetHandlePosition(i)print(f"Handle {i}: {handle}")# 获取样条曲线的 PolyDataspline_poly_data = obj.GetPolyData()if spline_poly_data:self.visualize_spline(spline_poly_data)def visualize_spline(self, poly_data):"""将样条曲线可视化"""# 清除之前的样条曲线 Actorself.renderer.RemoveAllViewProps()# 创建映射器和 Actormapper = vtk.vtkPolyDataMapper()mapper.SetInputData(poly_data)actor = vtk.vtkActor()actor.SetMapper(mapper)actor.GetProperty().SetColor(1, 0, 0)  # 设置样条曲线颜色为红色actor.GetProperty().SetLineWidth(2)# 将样条曲线 Actor 添加到渲染器self.renderer.AddActor(actor)self.vtk_widget.GetRenderWindow().Render()if __name__ == "__main__":app = QtWidgets.QApplication([])window = VTKSplineWidgetDemo()window.show()app.exec_()

相关文章:

VTK笔记- 3D Widget类 vtkSplineWidget 样条部件

vtk3DWidget vtk3DWidget是用于3D交互观察器的基类,也就是各种3D小部件类的基类,主要是在三维渲染场景中生成一个可以用于控制数据的可视化实体,比如点,线段(曲线)、平面、球体、包围盒(线框&am…...

文心一言:中国大模型时代的破局者与探路者

2023年,生成式人工智能(AIGC)的浪潮席卷全球,而百度推出的“文心一言”(ERNIE Bot)作为中国AI领域的代表性产品,迅速成为行业焦点。这款基于百度自主研发的“文心大模型”打造的对话式AI工具&am…...

【芯片验证】verificationguide上的36道UVM面试题

跟上一篇一样,verificationguide上的36到UVM面试题,通义回答ds判卷。 1. What is uvm_transaction, uvm_seq_item, uvm_object, uvm_component? uvm_transaction、uvm_seq_item、uvm_object、uvm_component是什么? uvm_transaction是UVM中所有事务的基础类,用于表示仿真…...

操作系统控制台-健康守护我们的系统

引言基本准备体验功能健康守护系统诊断 收获提升结语 引言 阿里云操作系统控制平台作为新一代云端服务器中枢平台,通过创新交互模式重构主机管理体验。操作系统控制台提供了一系列管理功能,包括运维监控、智能助手、扩展插件管理以及订阅服务等。用户可以…...

基于策略模式的智能提示语生成器设计与实现——以Tkinter GUI开发为例

基于策略模式的智能提示语生成器设计与实现——以Tkinter GUI开发为例 一、引言:智能化时代的提示工程工具 在人工智能技术广泛应用的时代背景下,如何与AI模型进行有效交互已成为关键技能。本文介绍的"AI任务需求与提示语策略生成器"正是基于…...

【打卡d1】算法模拟类

题目1 题目描述: 某百货公司为了促销,采用购物打折的优惠方法,每位顾客一次购物:在1000元以上者,按 9.5 折优惠;在2000以上者,按9折优惠;在3000以上者,按8.5 折优惠;在5000 以上者,按8折优惠;编写程序&…...

7.2 奇异值分解的基与矩阵

一、奇异值分解 奇异值分解(SVD)是线性代数的高光时刻。 A A A 是一个 m n m\times n mn 的矩阵,可以是方阵或者长方形矩阵,秩为 r r r。我们要对角化 A A A,但并不是把它化成 X − 1 A X X^{-1}A X X−1AX 的形…...

3.3.2 用仿真图实现点灯效果

文章目录 文章介绍Keil生成.hex代码Proteus仿真图中导入.hex代码文件开始仿真 文章介绍 点灯之前需要准备好仿真图keil代码 仿真图参考前文:3.3.2 Proteus第一个仿真图 keil安装参考前文:3.1.2 Keil4安装教程 keil新建第一个项目参考前文:3.1…...

Docker 学习笔记:从入门到部署,实战演练全流程!

📌 开篇:为什么要学 Docker? 还在为环境不一致、部署麻烦、依赖冲突头疼吗?Docker 让一切变得简单!作为现代开发和运维的神器,Docker 让我们可以用 一句命令 解决 “在我电脑上能跑” 的问题。今天&#x…...

本地搭建DeepSeek R1模型 + 前端

本地搭建DeepSeek R1模型 前端 配置: 操作系统:windows11 CPU:i5 13600KF GPU:英伟达4070 12GB 内存:16G DDR5 硬盘:1TB 模型安装 本文采用Ollama进行安装。Ollama安装比较简单。 官网&#xff1…...

MyBatis增删改查:静态与动态SQL语句拼接及SQL注入问题解析

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。本文将深入探讨 MyBatis 中的增删改查操作,重点讲解静态与动态 SQL 语句的拼接,并分析 S…...

Unity入门学习笔记(Day01)

一.认识unity工作面板 1.1.project window(项目面板) 显示当前项目中的所有文件和目录,包含了项目里面所有的资源文件 1.2.console window(输出面板) 显示当前游戏开发中生成的警告错误 1.3.hierarchy window&…...

教务考试管理系统-Sprintboot vue

一、前言 1.1 实践目的和要求 本次实践的目的是为了帮助学生强化对实践涉及专业技术知识的理解,掌握专业领域中软件知识的应用方法,并了解软件工程在具体行业领域的发展趋势。通过培养学生利用软件工程方法分析、设计并完成具体行业软件开发的能力&…...

GHCTF2025--Web

upload?SSTI! import os import refrom flask import Flask, request, jsonify,render_template_string,send_from_directory, abort,redirect from werkzeug.utils import secure_filename import os from werkzeug.utils import secure_filenameapp Flask(__name__)# 配置…...

文件上传漏洞(upload-labs)

目录 Pass-01(前端绕过) (1)JavaScript (2)Burpsuite(改后缀) Pass-02(IMME类型 ) burpsuite(改文件类型) Pass-03(黑名单绕过) …...

图片的拖拽+缩放

效果图&#xff1a; <script setup lang"ts"> import { onMounted, ref } from vue; import ImgBg from /assets/img/bg.jpg import Img1 from /assets/img/1.jpgconst innerStyle ref({left: 0,top: 0,width: 100,height: 0 }) const wrapStyle ref({width:…...

Windows软件插件-音视频文件读取器

下载本插件 本插件读取音频和视频文件&#xff0c;输出音频样本和视频样本&#xff0c;音频样本为16位PCM&#xff0c;采样率48000&#xff1b;视频样本为RGB32。大部分音频和视频文件格式都可以读取。本插件类型为DLL。 本插件是通过创建媒体基础“源读取器”对象实现读取音视…...

考研数一复习之拉格朗日中值定理求解函数极限

最近在复习考研数学,只是简单做题过于乏味,因此便总结了一些笔记,后续若有空,也会将自己的复习笔记分享出来。本篇&#xff0c;我们将重点讲解拉格朗日中值定理在求解函数极限中的应用。同时,作者本人作为python领域创作者&#xff0c;还将在本文分享使用sympy求解高数中函数极…...

聊天服务器分布式改造

目前的聊天室是单节点的&#xff0c;无论是http接口还是socket接口都在同一个进程&#xff0c;无法承受太多人同时在线&#xff0c;容灾性也非常差。因此&#xff0c;一个成熟的IM产品一定是做成分布式的&#xff0c;根据功能分模块&#xff0c;每个模块也使用多个节点并行部署…...

C++11的一些特性

目录 一、C11简介 二、统一的列表初始化 2.1 &#xff5b;&#xff5d;初始化 2.2 std::initializer_list 三、声明 3.1 auto 3.2 decltype 3.3 nullptr 四、范围for循环 五、智能指针 5.1 RAII 5.2 智能指针的原理 5.3 std::auto_ptr…...

【打卡day3】字符串类

例如统计字符个数&#xff0c;字符大小写转换 题目描述&#xff1a;输入一行字符串&#xff0c;计算A-Z大写字母出现的次数 思路&#xff1a; 1 定义一个整型数组&#xff0c;初始化为0&#xff0c;存储每个字母出现的次数&#xff0c;下标0对应字母A, 2&#xff0c;定义字…...

图像滑块对比功能的开发记录

背景介绍 最近&#xff0c;公司需要开发一款在线图像压缩工具&#xff0c;其中的一个关键功能是让用户直观地比较压缩前后的图像效果。因此&#xff0c;我们设计了一个对比组件&#xff0c;它允许用户通过拖动滑块&#xff0c;动态调整两张图像的显示区域&#xff0c;从而清晰…...

【音视频】ffplay常用命令

一、 ffplay常用命令 -x width&#xff1a;强制显示宽度-y height&#xff1a;强制显示高度 强制以 640*360的宽高显示 ffplay 2.mp4 -x 640 -y 360 效果如下 -fs 全屏显示 ffplay -fs 2.mp4效果如下&#xff1a; -an 禁用音频&#xff08;不播放声音&#xff09;-vn 禁…...

初识Linux

文章目录 初识Linux&#xff1a;从开源哲学到技术生态的全面解析一、Linux的背景与发展简史&#xff1a;从代码实验到数字基础设施1.1 起源与开源基因1.2 技术哲学之争1.3 GNU/Linux的融合 二、开源&#xff1a;Linux的核心竞争力与生态力量2.1 法律保障与四大自由2.2 社区协作…...

基于遗传算法的IEEE33节点配电网重构程序

一、配电网重构原理 配电网重构&#xff08;Distribution Network Reconfiguration, DNR&#xff09;是一项优化操作&#xff0c;旨在通过改变配电网中的开关状态&#xff0c;优化电力系统的运行状态&#xff0c;以达到降低网损、均衡负载、改善电压质量等目标。配电网重构的核…...

manus对比ChatGPT-Deep reaserch进行研究类学术相关数据分析!谁更胜一筹?

没有账号&#xff0c;只能挑选一个案例 一夜之间被这个用全英文介绍全华班出品的新爆款国产AI产品的小胖刷频。白天还没有切换语言的选项&#xff0c;晚上就加上了。简单看了看团队够成&#xff0c;使用很长实践的Monica创始人也在其中。逐渐可以理解&#xff0c;重心放在海外产…...

线程通信---java

线程 我们知道&#xff0c;线程是进程的最小执行单位&#xff0c;一个进程可以拥有多个线程&#xff0c;那么就会引入两个问题&#xff1a; 多个线程之间如何进行通信多个线程对同一个数据进行操作&#xff0c;如何保证程序正确执行&#xff0c;也就是线程安全问题 线程的常…...

python面试常见题目

1、python 有几种数据类型 数字:整形 &#xff08;int&#xff09;,浮点型 &#xff08;float&#xff09;布尔 &#xff08; bool&#xff09;:false true字符串 &#xff08;string&#xff09;列表 &#xff08;list&#xff09;元组 &#xff08;tuple&#xff09;字典 &…...

Python中与字符串操作相关的30个常用函数及其示例

以下是Python中与字符串操作相关的30个常用函数及其示例&#xff1a; 1. str.capitalize() 将字符串的第一个字符大写&#xff0c;其余字符小写。 s "hello world" print(s.capitalize()) # 输出: Hello world2. str.lower() 将字符串中的所有字符转换为小写。…...

2025年渗透测试面试题总结-小某鹏汽车-安全工程师(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 小鹏汽车-安全工程师 一、XXE漏洞与SSRF漏洞 1. XXE&#xff08;XML External Entity&#xff09;漏洞…...

kafka + flink +mysql 案例

假设你有两个Kafka主题&#xff1a;user_activities_topic 和 product_views_topic&#xff0c;并且你希望将user_activities_topic中的数据写入到user_activities表&#xff0c;而将product_views_topic中的数据写入到product_views表。 maven <dependencies><!-- …...

Windows下配置Flutter移动开发环境以及AndroidStudio安装和模拟机配置

截止 2025/3/9 &#xff0c;版本更新到了 3.29.1 &#xff0c;但是为了防止出现一些奇怪的bug&#xff0c;我安装的还是老一点的&#xff0c;3.19&#xff0c;其他版本的安装同理。AndroidStudio用的是 2024/3/1 版本。 — 1 环境变量&#xff08;Windows&#xff09; PUB_H…...

【工具类】Springboot 项目日志打印项目版本和构建时间

博主介绍&#xff1a;✌全网粉丝22W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

p5.js:模拟 n个彩色小球在一个3D大球体内部弹跳

向 豆包 提问&#xff1a;编写一个 p5.js 脚本&#xff0c;模拟 42 个彩色小球在一个3D大球体内部弹跳。每个小球都应留下一条逐渐消失的轨迹。大球体应缓慢旋转&#xff0c;并显示透明的轮廓线。请确保实现适当的碰撞检测&#xff0c;使小球保持在球体内部。 cd p5-demo copy…...

RISC-V医疗芯片工程师复合型转型的路径与策略

从RISC-V到医疗芯片:工程师复合型转型的路径与策略 一、引言 1.1 研究背景 在科技快速发展的当下,芯片技术已然成为推动各行业进步的核心驱动力之一。其中,RISC-V 架构作为芯片领域的新兴力量,正以其独特的优势迅速崛起,对整个芯片产业的格局产生着深远影响。RISC-V 架…...

HTML 文本格式化

HTML 文本格式化 在构建网页的过程中&#xff0c;文本的格式化是一个至关重要的环节。HTML&#xff08;HyperText Markup Language&#xff09;提供了丰富的标签和属性来帮助我们实现各种文本格式化的需求。本文将详细介绍HTML中常见的文本格式化方法&#xff0c;包括字体、颜…...

基于RNN+微信小程序+Flask的古诗词生成应用

项目介绍 平台采用B/S结构&#xff0c;后端采用主流的Flask框架进行开发&#xff0c;古诗词生成采用RNN模型进行生成&#xff0c;客户端基于微信小程序开发。是集成了Web后台开发、微信小程序开发、人工智能&#xff08;RNN&#xff09;等多个领域的综合性应用&#xff0c;是课…...

【算法】图论 —— Dijkstra算法 python

引入 求非负权边的单源最短路 时间复杂度 O( m l o g n mlogn mlogn) 模板 https://www.luogu.com.cn/problem/P4779 import heapq as hq def dijkstra(s): # dis表示从s到i的最短路 dis [float(inf)] * (n 1) # vis表示i是否出队列 vis [0] * (n 1) q [] dis[s…...

Java:LocalDatTime(代替Calendar)、ZoneDateTime(时区时间)

文章目录 Local(代替Calendar)方法&#xff1a;获取当前代码 LocalDate&#xff08;年月日星期&#xff09;LocalTime&#xff08;时分秒纳秒&#xff09;LocalDateTime(最常用&#xff1a;年月日时分秒纳秒)ZoneId 时区表示方法 ZoneDateTime(时区时间)方法世界标准时间&#…...

HOW - React 如何在在浏览器绘制之前同步执行 - useLayoutEffect

目录 useEffect vs useLayoutEffectuseEffectuseLayoutEffect主要区别总结选择建议注意事项 useLayoutEffect 使用示例测量 DOM 元素的尺寸和位置示例&#xff1a;自适应弹出框定位 同步更新样式以避免闪烁示例&#xff1a;根据内容动态调整容器高度 图像或 Canvas 绘制前的准备…...

PyTorch系列教程:编写高效模型训练流程

当使用PyTorch开发机器学习模型时&#xff0c;建立一个有效的训练循环是至关重要的。这个过程包括组织和执行对数据、参数和计算资源的操作序列。让我们深入了解关键组件&#xff0c;并演示如何构建一个精细的训练循环流程&#xff0c;有效地处理数据处理&#xff0c;向前和向后…...

VS2019,VCPKG - 为VS2019添加VCPKG

文章目录 VS2019,VCPKG - 为VS2019添加VCPKG概述笔记前置条件迁出vcpkg到本地验证库安装更新已经安装的库删除指定的包安装VS2019能用的boostvcpkg 2025.02.14 版本可以给VS2019用用VCPKG的好处备注END VS2019,VCPKG - 为VS2019添加VCPKG 概述 开源工程用到了VCPKG管理的包。…...

linux下 jq 截取json文件信息

背景&#xff1a;通过‘登录名‘ 获取该对象的其他个人信息如名字。 环境准备&#xff1a;麒麟操作系统V10 jq安装包 jq安装包获取方式&#xff1a;yum install jq 或 使用附件中的rpm 或 git自行下载 https://github.com/stedolan/jq/releases/download/ 实现过程介绍&am…...

测试大语言模型在嵌入式设备部署的可能性-ollama本地部署测试

前言 当今各种大语言模型百花齐放&#xff0c;为了方便使用者更加自由的使用大模型&#xff0c;将大模型变成如同棒球棍一样每个人都能用&#xff0c;并且顺手方便的工具&#xff0c;本地私有化具有重要意义。 本次测试使用ollama完成模型下载&#xff0c;过程简单快捷。 1、进…...

C语言基础系列【21】memcpy、memset

博主介绍&#xff1a;程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章&#xff0c;首发gzh&#xff0c;见文末&#x1f447;&#x1f…...

云曦春季开学考复现(2025)

Crypto 划水的dp和dq 下载附件后是简单的RSA算法题&#xff0c;之所以说简单是因为给了公钥e 趁热打铁&#xff0c;昨天刚学的RSA&#xff0c;既然有p有q&#xff0c;也有e&#xff0c;而np*q&#xff0c;可以算出欧拉函数值phi&#xff08;p-1&#xff09;*&#xff08;q-1&…...

探秘 Netty 通信中的 SslHandler 类:保障网络通信安全的基石

引言 在当今数字化时代&#xff0c;网络安全是每一个应用程序都必须重视的关键因素。尤其是在数据传输过程中&#xff0c;防止数据被窃取、篡改至关重要。Netty 作为一个高性能的网络编程框架&#xff0c;为开发者提供了强大的功能来构建可靠的网络应用。其中&#xff0c;SslH…...

Llama factory微调后的模型怎么通过ollama发布

接上一篇博客:用Llama Factory单机多卡微调Qwen2.5时报torch.OutOfMemoryError: CUDA out of memory的解决办法_llama-factory cuda out of memory-CSDN博客 把Lora模块和其基模型merge到一起之后,就可以通过ollama之类的框架提供服务了。不过还是有些格式转换的工作要做: …...

ubuntu 20.04下ZEDmini安装使用

提前安装好显卡驱动和cuda&#xff0c;如果没有安装可以参考我的这两篇文章进行安装&#xff1a; ubuntu20.04配置YOLOV5&#xff08;非虚拟机&#xff09;_ubuntu20.04安装yolov5-CSDN博客 ubuntu20.04安装显卡驱动及问题总结_乌班图里怎么备份显卡驱动-CSDN博客 还需要提前…...

CmBacktrace的学习跟移植思路

学习移植CmBacktrace需要从理解其核心功能、适用场景及移植步骤入手&#xff0c;结合理论学习和实践操作。以下是具体的学习思路与移植思路&#xff1a; 一、学习思路 理解CmBacktrace的核心功能 CmBacktrace是针对ARM Cortex-M系列MCU的错误追踪库&#xff0c;支持自动诊断Har…...