从DICOM开始入门医学图像处理-2-VTK+Qt+VS开发环境搭建

3 篇文章 1 订阅
3 篇文章 1 订阅
  1. 软件版本
    CMAKE3.8.0
    Visual Studio 2017
    Qt 5.9.1
    VTK 8.0.0
  2. 安装Qt,注意选择与你安装的VS版本对应的组件
  3. 目录结构
    这里写图片描述
  4. 打开CMake,如下设置
    这里写图片描述
    点击configure:
    这里写图片描述
  5. 选中VTK节点中的VTK_Group_Qt, 点击Configure
  6. Ungrouped Entries节点,确认Qt_QMAKE_EXECUTABLE 的路径,将VTK_QT_VERSION改成5. 点击Configure
  7. Ungrouped Entries节点,确认Qt的各个目录,注意,如果Qt已经被添加到环境变量中,这里的目录会自动填好,如果机器上安装有多个版本的Qt或者没有添加环境变量,请一定要确认这一步,
  8. VTK节点,确认VTK_BUILD_QT_DESIGNER_PLUDIN已经被勾选
  9. CMAKE节点, CMAKE_INSTALL_PREFIX选项,该选项是VS编译输出的目录,以后要使用的库目录,包含目录等目录都会在这个目录之下,请按照自己的习惯设置,此处设置为上文建立的D:\Libraries\vtk\vtk8.0.0\VTK-install
  10. 点击Add Entry按钮,Name填写CMAKE_DEBUG_POSTFIX,Type选择STRING,Value填写-gd,填写完如下:设置完这一步之后,编译输出的debug库和release库的名称就会不同,这样方便以后的使用且不会在生成的时候相互覆盖.
    这里写图片描述
  11. 点击Configure.此时应该没有红色的条目了.
  12. 点击Generate
  13. 在CMake的输出目录中,应该已经生成了对应的VS解决方案,用VS打开它.
  14. 以管理员身份运行VS(如果输出目录不是C盘,就不必使用管理员权限),打开VTK.sln
  15. Debug模式,生成ALL_BUILD.完成后生成INSTALL.
  16. Release模式,生成ALL_BUILD.完成后生成INSTALL.
  17. 上述步骤完成后,在CMAKE_INSTALL_PREFIX设置的路径下,即为编译好的文件。
  18. 与Qt相关的操作
    把release版本的QVTKWidgetPlugin.lib和QVTKWidgetPlugin.dl拷贝到Qt的Designer目录下,这样QtDesigner的控件箱中就有QvtkWidget控件了.
    你应该在这里找到这两个文件:

    (cmake输出路径)\bin\Release\QVTKWidgetPlugin.dll
    (cmake输出路径)\lib\Release\QVTKWidgetPlugin.lib

    你应该把这两个文件放到这里:

    (Qt安装路径)\Qt\Qt5.9.1\5.9.1\msvc(Cmake中选择的Msvc版本)\plugins\designer

如果你发现你的Designer中没有QvtkWidget控件,那么很有可能是这样:
你安装的Qt版本中,包含多个生成工具,如果你在(Qt安装路径)\Qt\Qt5.9.1\5.9.1\目录下面找到了多个msvc…这样的文件夹,那说明的确是这样,你应该从正确的msvc文件夹下的bin文件夹中启动designer.
19. 如何使用
到VTK的install目录下:
① 把bin目录加入环境变量
② 到lib目录下,按住shift键在空白处点击鼠标右键,选择”在此处打开命令行窗口”或者”在此处打开Power Shell窗口”,然后输入:dir /b >all.txt,生成全部文件名列表
③ 将这个列表中所有扩展名不是lib的文件名删掉,将这个文件复制两份,分别命名为debug.txt和release.txt,然后把debug.txt中的所有不带有”-gd”的删掉,把release.txt中的所有带”-gd”的删掉.可以使用正则表达式进行匹配并配合支持正则表达式的文本编辑器(例如VSCode或者Sublime或者Visual Studio的代码编辑区域)把不需要的条目删掉,下面给出正则表达式:

vtk+[a-zA-z1-9]+\-8\.0\-gd\.lib    匹配debug库
vtk+[a-zA-z1-9]+\-8\.0\.lib        匹配release库

④ 当你在VS中新建一个工程需要使用vtk时,在项目属性的包含目录中添加此处的include目录,在库目录中添加此处的lib目录,然后在debug模式下,链接器->输入->附加依赖项中添加Debug.txt中的项目,在release模式下, 链接器->输入->附加依赖项中添加release.txt中的项目
⑤ 如果你使用vtk的官方案例,你将会用到cmake,这时一定要确保你要使用的Qt版本和VTK版本在环境变量中能够被优先找到,这样就不需要手动填写了

20. Vtk中常见的非编译期错误的解决方案 此处指得是,程序能够通过编译链接,但是运行的时候弹出一个写着vtk error 的窗口. ① Error: no override found for ‘vtkRenderWindow’. 解决方案:在main.cpp文件中添加如下代码:

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

② QWidget: Must construct a QApplication before a QWidget
解决方案:这是在Release模式下使用了Debug模式的lib导致的.
③ 初始化错误
解决方案: 添加#include <vtkAutoInit.h>
④ VTK Error: no override found for ‘vtkVolumeTextureMapper2D’.
Error: no override found for ‘vtkRayCastImageDisplayHelper’.
解决方案: 添加VTK_MODULE_INIT(vtkRenderingVolumeOpenGL)
⑤ Error: no override found for ‘vtkImageMapper’.
解决方案在main函数中添加:
VTK_MODULE_INIT(vtkRenderingOpenGL)
⑥ Error:Could not locate vtkTextRenderer object.
解决方案: 添加:VTK_MODULE_INIT(vtkRenderingFreeType)
⑦ Error: Link to vtkinteractionstyle
添加:VTK_MODULE_INIT(vtkInteractionStyle)
⑧VTK6.3.0:Error: no override found for ‘vtkContextDevice2D’
添加VTK_MODULE_INIT(vtkRenderingContextOpenGL)

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值