首页 > 其他分享 >QT中vtk读取nii文件并修改其中标签

QT中vtk读取nii文件并修改其中标签

时间:2024-10-10 08:50:06浏览次数:1  
标签:ix nii QT imageData vtk dims1 label vtkSmartPointer thresholdedData1

// 获取读取器的输出数据
vtkSmartPointer<vtkNIFTIImageReader> reader = vtkSmartPointer<vtkNIFTIImageReader>::New();

// 设置读取器的输入文件名
const char* initNiiName = "D:/initInput.nii";
reader->SetFileName(initNiiName);

// 读取NII图像数据
try {
	reader->Update();
}
catch (itk::ExceptionObject &ex) {
	std::cout << "Exception caught in fixed image reading!" << std::endl;
	LOG_ERROR("Detail failed");
	std::cout << ex << std::endl;
}

vtkSmartPointer<vtkImageData> imageData = reader->GetOutput();
vtkSmartPointer<vtkImageData> thresholdedData1 = vtkSmartPointer<vtkImageData>::New();
thresholdedData1->SetOrigin(imageData->GetOrigin());
thresholdedData1->SetSpacing(imageData->GetSpacing());
thresholdedData1->SetDimensions(imageData->GetDimensions());
thresholdedData1->AllocateScalars(VTK_UNSIGNED_SHORT, 1);
auto label_dims1 = imageData->GetDimensions();
auto segDataLabelPtr1 = (unsigned short*)thresholdedData1->GetScalarPointer();

for (size_t iz = 0; iz < label_dims1[2]; iz++)
	for (size_t iy = 0; iy < label_dims1[1]; iy++)
		for (size_t ix = 0; ix < label_dims1[0]; ix++)
		{
			int idx = ix + iy * label_dims1[0] + iz * label_dims1[0] * label_dims1[1];

			segDataLabelPtr1[idx] = 1;
		}

// 创建 NIfTI 图像写入器
vtkSmartPointer<vtkNIFTIImageWriter> writer = vtkSmartPointer<vtkNIFTIImageWriter>::New();
writer->SetFileName("D:/output.nii");

// 设置要写入的图像数据
writer->SetInputData(thresholdedData1);

// 执行写入操作
writer->Update();

标签:ix,nii,QT,imageData,vtk,dims1,label,vtkSmartPointer,thresholdedData1
From: https://www.cnblogs.com/zj16/p/18455556

相关文章

  • 深度学习实战人脸表情识别【源码+模型+PyQt5界面】
    @目录研究背景与意义代码下载链接一、效果演示1.1图像识别1.2视频识别1.3摄像头识别二、技术原理2.1整体技术流程2.2常见七种人脸表情2.3传统人脸定位2.4深度学习人脸定位2.4.1MTCNN2.4.2RetinaFace2.4.3CenterFace2.4.4BlazeFace2.4.5YOLO2.4.6SSD2.4.7CascadeCNN......
  • 基于深度学习的多焦点图像融合系统【数据集+深度学习模型+源码+PyQt5界面】
    @目录研究背景代码下载链接一、效果演示1.1界面设计1.2图像融合演示11.3图像融合演示21.4图像融合演示3二、技术原理2.1引言2.2融合策略2.3深度特征的提取2.4融合策略2.4.1利用深度特征计算模糊度2.4.2去噪与平滑2.4.3图像融合三、实验分析3.1实验设置3.1.1硬件环境3......
  • Qt中的http
    来自GTP在Qt中,使用QNetworkAccessManager、QNetworkRequest和QNetworkReply类来进行HTTP请求。以下是使用Qt进行HTTP操作的基本步骤和示例代码。引入必要的头文件cpp#include<QCoreApplication>#include<QNetworkAccessManager>#include<QNetworkRequest>......
  • QT5中引入GMSSL库
    近来项目中需要使用加密算法,对上/下位机之间的消息进行加密。客户要求使用国密算法库,不能使用国际上通用的AES、RSA等算法。国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。其中SM1没有开源,其他的均开源。源码编译开源的国密算法全网......
  • Qt的背景介绍
    个人主页:C++忠实粉丝欢迎点赞......
  • PyQt5 使用 QLabel 实现图像 360度 不间断旋转
    PyQt5使用QLabel实现图像360度不间断旋转当我们需要实现让一个图像360度旋转时,比如:音乐播放器中播放时,歌曲封面的旋转效果,你可以尝试使用下面的方法代码结构本文中全部代码全在test_QLabel_whirling.py这一个文件中编码,步骤中有变动的地方会注释标注,无改动的不会重复显......
  • Qt实现自定义控件-按钮
    背景:想着自己实现一个好看一点的按钮,切换时加一点动画。也算巩固一下Qt的基本知识。基本环境: 主要用到的类有:QBrush:画刷,主要是画一些颜色啥的。QPainter:画笔,可以画形状。比如带弧形的矩形,圆形,写字等。QPropertyAnimation:动画相关。关键逻辑:重载paintEvent:实现渲染逻辑,......
  • Pyqt5+SQLite
    通常在做业务逻辑时会遇到,如何在界面上对数据库信息进行操作的问题。这里我们选用SQLite,它是一种嵌入式数据库,以单个独立的文件形式存储数据,适用于Pyqt5的开发。下面做一个小案例,将数据库信息显示在界面中。1.创建数据库代码案例如下(创建一个用户信息表):conn=sqlite3.con......
  • labview和QT编程
    LabViewLabView所面向的并非传统意义上的程序员。他的所有功能都可以通过组合某些组件来完成。程序的流程控制,比如循环之类的也是通过画图一样的操作来做的。所有的程序功能几乎都可以通过鼠标来构造出来。优点是做一个能运行的程序非常简单。做一个虚拟的仪器很容易。也不需要......
  • Nodered学习记录-MQTT
    安装EMQXEMQX(以前称为EMQ)是一个开源的、高度可扩展且高可用的分布式MQTT消息代理,专为物联网(IoT)、机器对机器(M2M)通信和移动应用程序设计。它支持MQTT和其他IoT协议如CoAP/LwM2M,能够处理数百万并发连接,并提供强大的消息路由能力。通过docker安装官方文档$dockerpullem......