VTK读取UnstructuredGrid.vtk文件数据显示

数据放在标准的vtk文件中,格式为UnstructuredGrid

使用vtkDataSetReader读取


#include <vtkSmartPointer.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include "vtkDataSetMapper.h"
#include "vtkDataSetReader.h"
#include "vtkProperty.h"
#include "vtkDataSetMapper.h"

int main(int argc, char *argv[])
{
	vtkSmartPointer < vtkDataSetReader> dataSetReader
		= vtkSmartPointer<vtkDataSetReader>::New();
	vtkSmartPointer<vtkDataSetMapper> mapper
		= vtkSmartPointer<vtkDataSetMapper>::New();
	vtkSmartPointer<vtkActor> actor
		= vtkSmartPointer<vtkActor>::New();
	vtkSmartPointer<vtkRenderer> renderer
		= vtkSmartPointer<vtkRenderer>::New();
	vtkSmartPointer<vtkRenderWindow> renderWindow
		= vtkSmartPointer<vtkRenderWindow>::New();

	dataSetReader->SetFileName("C:/Temp/mesh_
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是示例代码: ```python import vtk import numpy as np import SimpleITK as sitk from PyQt5.QtWidgets import QApplication, QWidget, QFileDialog, QVBoxLayout from vtk.qt.QVTKRenderWindowInteractor import QVTKRenderWindowInteractor class DicomViewer(QWidget): def __init__(self): super().__init__() # 创建VTK渲染窗口 self.vtkWidget = QVTKRenderWindowInteractor(self) self.vtkWidget.Initialize() self.vtkWidget.Start() # 创建PyQt布局 layout = QVBoxLayout() layout.addWidget(self.vtkWidget) self.setLayout(layout) # 设置窗口标题和大小 self.setWindowTitle('Dicom Viewer') self.setGeometry(100, 100, 800, 600) # 打开.dcm序列文件 options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog fileName, _ = QFileDialog.getOpenFileName(self, "Open DICOM Directory", "", "DICOM Files (*.dcm)", options=options) if fileName: # 读取.dcm序列文件 reader = vtk.vtkDICOMImageReader() reader.SetDirectoryName(fileName) reader.Update() # 获取图像数据 imageData = reader.GetOutput() # 将VTK图像数据转换成SimpleITK图像数据 sitkImage = sitk.GetImageFromArray(vtk.util.numpy_support.vtk_to_numpy(imageData.GetPointData().GetScalars()).reshape( imageData.GetDimensions()[::-1]).transpose()) sitkImage.SetSpacing(imageData.GetSpacing()[::-1]) # 保存为.nii.gz文件 sitk.WriteImage(sitkImage, 'output.nii.gz') # 创建VTK渲染器和窗口 renderer = vtk.vtkRenderer() self.vtkWidget.GetRenderWindow().AddRenderer(renderer) # 创建VTK图像数据显示对象 mapper = vtk.vtkImageMapper() mapper.SetInputData(imageData) actor = vtk.vtkActor2D() actor.SetMapper(mapper) # 将VTK图像数据显示对象添加到VTK渲染器中 renderer.AddActor(actor) renderer.ResetCamera() if __name__ == '__main__': app = QApplication([]) window = DicomViewer() window.show() app.exec_() ``` 这段代码可以在PyQt界面中打开.dcm序列文件,并将其转换为.nii.gz文件。同时,它还使用VTK进行三维可视化,并将VTK渲染窗口嵌入到PyQt界面中。您可以根据需要对代码进行修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C++程序员Carea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值