VTK QT显示Dicom图片

自用 QT5.15.2 VTK9.2.6 VS2022 显示Dicom图片

前置

QT ui中设置widget,objectName设置为 qvtkwidget

右键Ui部件,提升为,输入名称QVTKOpenGLNativeWidget,会自动填入头文件qvtkopenglnativewidget.h

在main函数文件中加入初始化(main入口前)

#include<vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2)
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);

(用于初始化一些东西,加不加好像没什么变化,个人暂时未感觉出来)

显示Dicom图片

    //设置Dicom文件路径
    QString dicomFilePath = "Test.dcm";
    //读取Dicom文件
    vtkSmartPointer<vtkDICOMImageReader> reader = vtkSmartPointer<vtkDICOMImageReader>::New();
    reader->SetDataByteOrderToLittleEndian();//设置小端对齐,看Dicom格式设置
    reader->SetFileName(dicomFilePath.toStdString().c_str());//也可以读取文件夹,函数不同
    reader->Update();
    //新建渲染器,渲染窗口,Viewer2,交互器,交互器样式
    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    vtkSmartPointer<vtkImageViewer2> imageViewer = vtkSmartPointer<vtkImageViewer2>::New();
    vtkNew<vtkGenericOpenGLRenderWindow> renderWindow ;
    vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    vtkSmartPointer<vtkInteractorStyleImage> interactorstyle = vtkSmartPointer<vtkInteractorStyleImage>::New();
    //绑定操作
    interactor->SetInteractorStyle(interactorstyle);
    renderWindow->AddRenderer(renderer);//渲染窗口绑定渲染器
    interactor->SetRenderWindow(renderWindow);//交互器绑定渲染窗口
    ui.qvtkwidget->setRenderWindow(renderWindow.Get());//设置Ui部件的渲染窗口
    //设置Viewer的渲染窗口,交互器
    imageViewer->SetRenderWindow(renderWindow.Get());
    imageViewer->SetInputConnection(reader->GetOutputPort());
    imageViewer->SetColorLevel(ui.windowLevel->text().toDouble());//窗位,里面是一个ui部件,来获取值
    imageViewer->SetColorWindow(500);//窗宽,也可以用值
    imageViewer->Render();
    //interactor->Disable();//禁止交互操作,要放在start(实际上是initialize)前,有时候只想看图
    interactor->Initialize();
    interactor->Start();//开始监听交互事件(如果未Initialize,则会自动Initialize)

总结

网上的QT VTK的教程好像都比较老,用了一些插件从而在ui界面创建一个vtk的特殊widget,现在这个东西没有了,直接用"提升为"就行了

QT的加入就是引入了一个ui部件,这个ui部件只需要给它一个对应的渲染窗口就行了,剩下的东西跟没有QT没有什么区别

值得注意的是,当渲染窗口绑定了渲染器,交互器绑定了渲染窗口后,只需要设置渲染窗口就可以关联到渲染器和交互器了,同时,要注意一下设置的顺序,有适合设置的前后顺序不同也可能出现问题

最后,显示的图片似乎比ui部件要小,还在寻找方法,但是已经可以显示了,启动交互器的话左键可以调整窗位,右键和滚轮可以放大缩小(已解决,但仍有问题)

    vtkCamera* camera = imageViewer->GetRenderer()->GetActiveCamera();
    double zoomFactor = 1.5;
    camera->Zoom(zoomFactor);

设置imageViewer2的camera,给它一个缩放因子就行了,但是imageViewer2本身有进行一个自适应缩放,这个缩放因子不知道怎么算

个人学习用,如有错误,烦请告知,不胜感激!

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
VTK是Visualization Toolkit的缩写,是一个开源的图形处理工具库,用于创建、处理和渲染三维图形。它提供了丰富的功能,可以用于各种应用程序,包括科学可视化、医学图像处理、机器人学等。 Qt是一种跨平台的应用程序开发框架,具有丰富的GUI(图形用户界面)组件和工具,可以用于创建各种类型的应用程序。它提供了直观、交互式的界面设计工具,使开发人员能够轻松地创建用户友好的应用程序。 DICOM是医学图像和通信标准的缩写,它是医学领域的一种通用文件格式和协议,用于存储、传输和共享医学图像和相关信息。DICOM文件通常包含来自医学成像设备(如CT扫描、MRI、X射线等)的图像数据及其相关的患者信息、检查参数等。 VTKQtDICOM常常一起使用,用于开发医学图像处理和分析的应用程序。通过使用VTKQt,开发人员可以轻松地创建具有丰富可视化效果的医学图像应用程序,并提供直观、智能化的界面。VTK提供了丰富的图形处理和可视化工具,可以对DICOM图像进行处理、分析和可视化。而Qt的GUI组件和界面设计工具使开发人员能够创建用户友好的应用程序界面,方便用户查看、编辑和分析DICOM图像。 总的来说,VTKQtDICOM的结合为医学图像处理和分析应用程序的开发提供了强大的工具和功能。它们的使用可以加快开发过程,提高应用程序的效率和用户友好性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值