VS2019+Qt5.14.2+VTK8.2.0+ITK5.1.0环境配置

VS2019+Qt5.14.2+VTK8.2.0+ITK5.1.0环境配置

1. Qt5.14.2

  1. 下载地址:https://www.qt.io/download
  2. 安装注意:Qt编译器选用msvc2017_64
  3. 环境配置:
    系统->高级系统设置>环境变量->系统变量:Path->添加qt的bin文件夹,如:D:\qt5.14.2\5.14.2\msvc2017_64\bin

2. VS2019

  1. 下载地址:https://visualstudio.microsoft.com/zh-hans/
  2. 插件下载:扩展->管理扩展->联机(搜索Qt Visual Tools)->下载->重启VS
    在这里插入图片描述
    在这里插入图片描述
  3. 环境设置:扩展->Qt VS Tools->Qt options->Add(qt编译器目录,如:D:\qt5.14.2\5.14.2\msvc2017_64)

3. VTK8.2.0

  1. 下载地址:https://vtk.org/download/
    下载完成之后解压并用CMake编译,注意勾选Qt相关组件
    也可直接使用编译好的文件,直接解压即可,链接:https://pan.baidu.com/s/1VgOIL3HGfNiMPAgYSJxFxA
    提取码:3vti
  2. 环境配置
    (1) 在vs2019中,点击调试->xxx.调试属性(最后一个)->VC++目录->包含目录->添加编译好的vtk的include\ vtk-8.2文件(如:C:\VTK\VTK-8.2.0_Install\include\vtk-8.2)
    点击调试->(最后一个)xxx.调试属性->VC++目录->库目录->添加编译好的vtk的lib文件(如:C:\VTK\VTK-8.2.0_Install\lib)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    (2) 在vs2019中,点击调试->xxx.调试属性(最后一个)->链接器->输入->附加依赖库->添加vtk\bin目录下所有的.lib文件名(如: vtkChartsCore-8.2.lib等);注意事项:debug和release状态下的lib是不一样的,切换release状态得重新添加相应的.lib包。
    在这里插入图片描述
    在这里插入图片描述

4. ITK5.1.0

  1. 下载地址:https://itk.org/download/
    下载完成之后解压并用CMake编译,注意勾选VTK相关组件
    也可直接使用编译好的文件,直接解压即可,链接:https://pan.baidu.com/s/1JblJ2nbdWPbb8vK8grfQzA
    提取码:lcka
  2. 环境配置
    (1) 在vs2019中,点击调试->(最后一个)xxx.调试属性->VC++目录->包含目录->添加编译好的itk的include\ vtk-8.2文件(如:D:\ITK5.1.0\bin\include\ITK-5.1);点击调试->(最后一个)xxx.调试属性->VC++目录->库目录->添加编译好的itk的lib文件(如:D:\ITK5.1.0\bin\lib)
    在这里插入图片描述
    在这里插入图片描述
    (2) 在vs2019中,点击调试->xxx.调试属性(最后一个)->链接器->输入->附加依赖库->
    添加itk\bin目录下所有的.lib文件名(如: ITKBiasCorrection-5.1.lib等);
    在这里插入图片描述
    在这里插入图片描述

5. 测试

下面来测试一个用ITK读取Dicom图片并用VTK显示的例子

#include "itkImage.h"
#include "itkImageFileReader.h"
#include "itkGDCMImageIO.h"
#include "itkImageToVTKImageFilter.h"
#include <vtkSmartPointer.h>
#include <vtkImageActor.h>
#include <vtkImageData.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleImage.h>
#include <vtkImageFlip.h>
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkRenderingVolumeOpenGL2);

int main()
{
    //设置读取图像类型
    using PixelType = signed short;
    const unsigned int  Dimension = 2;
    typedef itk::Image<PixelType, Dimension> ImageType;
    typedef itk::ImageFileReader<ImageType> ReaderType;
    //读取指针
    ReaderType::Pointer reader = ReaderType::New();
    //设置读取文件
    reader->SetFileName("lung//I10");
    
    //创建读取DCM的GDCMIOImage类
    using ImageIOType = itk::GDCMImageIO;
    ImageIOType::Pointer gdcmImageIO = ImageIOType::New();
    reader->SetImageIO(gdcmImageIO);
    try
    {
        reader->Update();
    }
    catch (itk::ExceptionObject& e)
    {
        std::cerr << "exception in file reader" << std::endl;
        std::cerr << e << std::endl;
        return EXIT_FAILURE;
    }

    //连接滤波器,转换为VTK类型
    typedef itk::ImageToVTKImageFilter<ImageType> FilterType;
    FilterType::Pointer filter = FilterType::New();
    filter->SetInput(reader->GetOutput());
    try
    {
        filter->Update();
    }
    catch (itk::ExceptionObject& e)
    {
        std::cerr << "exception in file reader" << std::endl;
        std::cerr << e << std::endl;
        return EXIT_FAILURE;
    }

    vtkSmartPointer<vtkImageData> image = filter->GetOutput();
    
    //由于ITK格式与VTK格式图片Y轴相反,因此要进行翻转
    vtkSmartPointer<vtkImageFlip> imageflip = vtkSmartPointer<vtkImageFlip>::New();
    imageflip->SetInputData(filter->GetOutput());
    imageflip->SetFilteredAxes(1);//Y轴
    imageflip->Update();

    /* vtkImageActor在3D场景下渲染图像 */
    vtkSmartPointer<vtkImageActor> actor = vtkImageActor::New();
    actor->SetInputData(imageflip->GetOutput());

    vtkSmartPointer<vtkRenderer> render = vtkRenderer::New();
    render->AddActor(actor);
    render->SetBackground(255, 1, 1);//设置窗口背景颜色

    vtkSmartPointer<vtkRenderWindow> window = vtkRenderWindow::New();
    window->SetSize(600, 600);       //设置窗口大小
    window->AddRenderer(render);
    window->SetWindowName("the CT picture ");//设置窗口名称

    vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkRenderWindowInteractor::New();
    interactor->SetRenderWindow(window);

    vtkSmartPointer<vtkInteractorStyleImage> style = vtkSmartPointer<vtkInteractorStyleImage>::New();
    interactor->SetInteractorStyle(style);

    interactor->Initialize();
    interactor->Start();

	return 0;
}
  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值