VTK知识学习(21)- 数据的读写

1、前言

对于应用程序而言,都需要处理特定的数据,VTK应用程序也不例外。

VTK应用程序所需的数据可以通过两种途径获取:

第一种是生成模型,然后处理这些模型数据(如由类 vtkCylinderSource 生成的多边形数据);

第二种是从外部存储介质里导入相关的数据文件,然后在应用程序中处理这些读入的数据(如vtkBMPReader 读取 BMP图像)。

另一方面,VTK也可以将程序中处理完成的数据写入单个文件中,或者将所渲染的场景导出,以备后续操作的使用。

从可视化管线的角度来看,一般以数据的读取(或由模型创建数据)开始,而以数据的写盘操作(或Mapper)结束,重点学习可视化管线两端相关的类,包括数据读写以及场景的导入导出。

2、Reader 类与Writer类

1)、常规步骤

要将外部数据读入可视化管线,主要的步骤如下。
1)实例化 Reader 对象。
2)指定所要读取的文件名。
3)调用 Update()方法促使管线执行。当管线后续的Fiter有Update()请求时,如调用Render()方法管线就会读取相应的图像文件,所以这一步有时也可省略。

 Writer 类的主要步骤如下:
1)实例化 Writer 对象。
2)输入要写盘的数据以及指定待写盘的文件名。
3)调用 Write0方法促使 Writer 类开始写盘操作。
VTK 提供了不同的 Reader/riter 类读写各种文件,对于类的使用者而言,最重要的是根据不同的文件类型选择合适的 Reader/Writer 类进行读写操作,不同的 Reader 类所输出的数据类型不相同,不同的 Writer 类所要求输入的数据类型也不同。

2)、读写类型对象

根据不同的数据集类型有不同 Reader/Writer 类:

3)、Png图像读取
private void RenderPNGImage()
{vtkPNGReader pngReader = vtkPNGReader.New();pngReader.SetFileName("D:\\图像\\boxes\\cardboard_boxes_01.png");pngReader.Update();vtkImageActor imageActor = vtkImageActor.New();imageActor.SetInputData(pngReader.GetOutput());imageActor.Update();vtkRenderer render = vtkRenderer.New();render.AddActor(imageActor);vtkRenderWindow renWin = renderWindowControl.RenderWindow;renWin.AddRenderer(render);renWin.Render();
}

4)、使用Factory读取图像

该类会试着寻找一种最适合的类对图像做读取操作,可以读取大部分标准格式的图像文件

 private void RenderImageUn(){string fileName = "D:\\图像\\boxes\\cardboard_boxes_01.png";vtkImageReader2 reader = vtkImageReader2Factory.CreateImageReader2(fileName);reader.SetFileName(fileName);reader.Update();vtkImageActor imageActor = vtkImageActor.New();imageActor.SetInputData(reader.GetOutput());vtkRenderer render = vtkRenderer.New();render.AddActor(imageActor);vtkRenderWindow renWin = renderWindowControl.RenderWindow;renWin.AddRenderer(render);renWin.Render();}
5)、读取序列图像

医学图像应用程序中常常会处理序列的图像文件,比如计算机断层成像或者磁共振成像所成的图像一般都是由多个有顺序的二维图像组成,应用程序需要一次性导入一个序列的二维图像。VTK没有提供专门的类读取序列图像文件,但VTK的图像 Reader 类都有提供方法 SetFileNames()来设置多个图像文件名,利用该方法可以实现序列图像的读取。示例 首先读取-个JPG 的序列图像 Head,该序列图像包含 100 张大小为 256x256 像素的二维图像,由这 100张二维图像组成一个三维数据体。

private void RenderSeries()
{vtkStringArray fileArray = vtkStringArray.New();for (int i = 1; i < 100; i++){string ss = $"F:\\code\\VTK\\TestActiViz\\bin\\Debug\\data\\Head\\head{string.Format("{0:000}", i)}.jpg";fileArray.InsertNextValue(ss);}//读取JPG序列图像vtkJPEGReader reader = vtkJPEGReader.New(); reader.SetFileNames(fileArray);vtkImageViewer2 viewer = vtkImageViewer2.New();viewer.SetInputConnection(reader.GetOutputPort());// vtkRenderWindowInteractor windowInteractor = vtkRenderWindowInteractor.New();vtkRenderWindow renWin = renderWindowControl.RenderWindow;viewer.SetSlice(50);viewer.SetSliceOrientationToXY();viewer.SetRenderWindow(renWin);//  viewer.Render();renWin.Render();}

3、其他类型的读写

1)、vtkPolyData类型

2)、vtkRectilinearGrid 类型

3)、vtkUnstructuredGrid 类型

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

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

相关文章

MySQL--用户权限

1.使用root用户登录MySQL客户端&#xff0c;创建一个名为userl的用户&#xff0c;初始密码为123456;创建一个名为user2的用户&#xff0c;无初始密码。然后&#xff0c;分别使用uesr1、user2登录MySQL 客户端。 创建两个用户 使用user1登录 使用user2登录 2.使用root用户登录&a…

如何在 Ubuntu 上安装开源监控工具 Uptime Kuma

简介 Uptime Kuma&#xff08;或简称 Kuma&#xff09;是一个开源监控工具&#xff0c;用于监控 HTTP、HTTPS、DNS 等协议的服务。Uptime Kuma 提供多种功能&#xff0c;如多语言支持、多个状态页面、代理支持等。 接下来&#xff0c;我将一步一步教大家如何进行安装和部署&am…

AKE 安全模型:CK, CK+, eCK

参考文献&#xff1a; [BCK98] Mihir Bellare, Ran Canetti, Hugo Krawczyk. A Modular Approach to the Design and Analysis of Authentication and Key Exchange Protocols (Extended Abstract). STOC 1998: 419-428.[CK01] Ran Canetti, Hugo Krawczyk. Analysis of Key-E…

vue2面试题|[2024-12-5]

开题答辩终于结束了&#xff0c;又要开始我的前端面试学习啦&#xff01;&#xff01;&#xff01; 1.v-model双向绑定原理 class Vue{constructor(options){this.$options optionsthis.$watchEvent {}if(typeof options.beforeCreate function){options.beforeCreate.bind…

AI Agent 的崛起与未来:专业模型时代的新趋势20241209

AI Agent 的崛起与未来&#xff1a;专业模型时代的新趋势 引言 &#x1f4cb; 在人工智能飞速发展的今天&#xff0c;AI Agent 正在从科幻走向现实。尽管专业大模型在垂直领域的表现令人惊艳&#xff0c;AI Agent 的整合能力和协作潜力却赋予了它独特的价值。本文将回顾 AI A…

【opencv入门教程】9.视频加载

文章选自&#xff1a; 一、VideoCapture类 用于从视频文件、图像序列或摄像头捕获视频的类。函数&#xff1a;CV_WRAP VideoCapture();brief 默认构造函数CV_WRAP explicit VideoCapture(const String& filename, int apiPreference CAP_ANY);brief 使用 API 首选项打开…

【MySQL — 数据库基础】深入解析MySQL数据库操作:创建、使用、删除及字符集管理

目录 1. 数据库的操作 1.1 显示当前的数据库 1.2 创建数据库 1.3 使用数据库 1.4 删除数据库 1.5 删除磁盘文件的原理 1.6 退出客户端 文章介绍 本文详细介绍了数据库的基本操作&#xff0c;包括显示当前数据库、创建数据库、使用数据库、删除…

k8s 优雅监控jvm及dump heap的方案探讨

背景 k8s cluster 的健康检测失败会主动重启pod&#xff0c;而大部份情况下健康检测失败都是由full gc引起的。往往发生重启时已经没有条件dump heap排查full gc的原因。 如何监控 为了避免因健康检测失败而导致的pod重启&#xff0c;我们需要实施有效的监控策略&#xff0c;这…

搭建Discuz论坛

lnmp l&#xff1a;linux操作系统 n&#xff1a;nginx前端页面 m&#xff1a;mysql数据库&#xff0c;账号密码等等都是保存在这个数据库里面 p&#xff1a;php------nginx擅长处理的是静态页面&#xff0c;页面登录账户&#xff0c;需要请求到数据库&#xff0c;通过php把动态…

SpringBoot3整合SpringMVC

一、实现过程: (1).创建程序 (2).引入依赖: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"…

移动应用开发课程第六次实验:为实验2添加登陆页面,用SQList存储好友基本信息

1、在Android Studio中&#xff0c;请在第二次实验成果的基础上完成以下实验要求。 向右滑动 请添加登录页面。在登录页面中&#xff0c;如果用户输入的用户名和密码正确&#xff0c;则跳转至如上图所示的好友列表&#xff0c;并记录用户的登录信息&#xff0c;在用户第一次登…

杨振宁大学物理视频中黄色的字,c#写程序去掉

先看一下效果&#xff1a;&#xff08;还有改进的余地&#xff09; 我的方法是笨方法&#xff0c;也比较刻板。 1&#xff0c;首先想到&#xff0c;把屏幕打印下来。c#提供了这样一个函数&#xff1a; Bitmap bmp new Bitmap(640, 480, PixelFormat.Format32bppArgb); // 创…

MaxEnt模型在物种分布模拟中如何应用?R语言+MaxEnt模型融合物种分布模拟、参数优化方法、结果分析制图与论文写作

目录 第一章 以问题导入的方式&#xff0c;深入掌握原理基础 第二章 常用数据检索与R语言自动化下载及可视化方法 第三章 R语言数据清洗与特征变量筛选 第四章 基于ArcGIS、R数据处理与进阶 第五章 基于Maxent的物种分布建模与预测 第六章 基于R语言的模型参数优化 第七…

数字图像处理(15):图像平移

&#xff08;1&#xff09;图像平移的基本原理&#xff1a;计算每个像素点的移动向量&#xff0c;并将这些像素按照指定的方向和距离进行移动。 &#xff08;2&#xff09;平移向量包括水平和垂直分量&#xff0c;可以表示为&#xff08;dx&#xff0c;dy&#xff09;&#xff…

海外的bug-hunters,不一样的403bypass

一种绕过403的新技术&#xff0c;跟大家分享一下。研究HTTP协议已经有一段时间了。发现HTTP协议的1.0版本可以绕过403。于是开始对lyncdiscover.microsoft.com域做FUZZ并且发现了几个403Forbidden的文件。 &#xff08;访问fsip.svc为403&#xff09; 在经过尝试后&#xff0…

WPF Prism 01-BootstrapperShell

Prism介绍 Prism 是一个用于在 WPF、.NET MAUI、Uno 平台和 Xamarin Forms 中构建松耦合、可维护和可测试的 XAML 应用程序的框架。每个平台都有单独的发布版本&#xff0c;并且这些版本将在独立的开发时间线上进行开发。Prism 提供了一组设计模式的实现&#xff0c;这些模式有…

计算机网络-Wireshark探索ARP

使用工具 Wiresharkarp: To inspect and clear the cache used by the ARP protocol on your computer.curl(MacOS)ifconfig(MacOS or Linux): to inspect the state of your computer’s network interface.route/netstat: To inspect the routes used by your computer.Brows…

Sketch中文版下载安装:一站式设计平台指南

Sketch&#xff0c;这个以轻量和高效著称的矢量设计工具&#xff0c;已经在全球设计领域创造了许多令人惊叹的成果。它以其矢量编辑、控件和样式等功能而闻名。而其中文版本——一站式设计平台“在线设计工具”&#xff0c;在功能全面性、中文操作环境、简洁界面以及设备兼容性…

机器学习决策树原理详解

一、引言 在当今蓬勃发展的人工智能与大数据领域&#xff0c;大模型正以前所未有的影响力改变着众多行业的格局。而决策树作为机器学习算法家族中的经典成员&#xff0c;以其简洁直观的特点和广泛的适用性&#xff0c;不仅能独立解决诸多实际问题&#xff0c;更是诸多先进大模…

Kafka怎么发送JAVA对象并在消费者端解析出JAVA对象--示例

1、在pom.xml中加入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-stream-kafka</artifactId><version>3.1.6</version></dependency> 2、配置application.yml 加入Kafk…