三维显示及处理工具VTK——开发环境搭建(VS2017+Qt5.9.2+VTK8.2)

1.VTK简介

Vtk,(visualization toolkit)是一个开源的免费软件系统,主要用于三维计算机图形学、图像处理和可视化。Vtk是在面向对象原理的基础上设计和实现的,它的内核是用C++构建的,包含有大约250,000行代码,2000多个类,还包含有几个转换界面,因此也可以自由的通过Java,Tcl/Tk和Python各种语言使用vtk。
——来源百度词条

The Visualization Toolkit (VTK) is open source software for manipulating and displaying scientific data. It comes with state-of-the-art tools for 3D rendering, a suite of widgets for 3D interaction, and extensive 2D plotting capability.
——来源VTK官网介绍

个人观点:VTK作为3D处理开源库,不仅支持3D数据的加载、显示和丰富通用工具,还拥有强大的3D数据处理函数,乃3D视觉居家必备良器。
作为比较:
OpenGL:仅作为3D渲染引擎,需要自己编写很多工具或者操作,自由度高,但是太容易重复造轮子。
PCL(Point Cloud Library):以VTK为基础针对三维点云处理做了很多运算操作,但最新版本是2014年的,后续没有更新了,所以就不考虑使用了。
OpenCV Viz:编译OpenCV时会有Viz选项,可以将VTK编译到OpenCV中作为三维显示控件,使用方便,但与OpenCV绑定,如果不需要使用OpenCV时,仅显示处理三维数据,也不必考虑。

2.VTK编译

根据个人使用情况,需要在VS2017+Qt5.9.2环境下使用VTK,因此本博客主要记录该环境下的VTK配置。
首先完成VTK的编译,步骤如下:

  1. VTK官网下载源代码:
    链接:https://vtk.org/download/#latest
    本人下载的是vtk-8.2.0,此时9.0.0版本处于测试版本阶段。

  2. 解压到选定的文件夹。(F:\VTK\VTK-8.2.0)

  3. 使用CMake进行编译。首先在F:\VTK\VTK-8.2.0中创建build文件夹,并且在build文件夹下创建install文件夹。则使用CMake中按照需求,设置对应地址和平台。
    三维显示及处理工具VTK——开发环境搭建(VS2017+Qt5.9.2+VTK8.2)_第1张图片

  4. Configure——Generate——Open Project
    CMAKE_INSTALL_PREFIX设置到install文件夹,点击Configure,稍等片刻即可完成配置,出现“Configuring done”,则说明配置无误。之后Generate,最后Open Project。这样就完成了在VS2017开发环境下的VTK工程搭建。
    三维显示及处理工具VTK——开发环境搭建(VS2017+Qt5.9.2+VTK8.2)_第2张图片

  5. 编译+安装
    在VS2017中打开了工程,将工程切换到release+x64
    在这里插入图片描述
    之后编译ALL_BUILD,编译需要花费一段时间,耐心等待(可以写写博客、看看文章)。
    三维显示及处理工具VTK——开发环境搭建(VS2017+Qt5.9.2+VTK8.2)_第3张图片
    所有内容编译通过即得到相应dlllib,分别在build——bin\lib文件夹内。
    最后编译INSTALL,在build文件夹下会有bin \ include \ lib文件夹,其中即包含着dll \ lib \ .h文件。其中lib\cmake\vtk-8.2中存在对应CMake文件,OpenCV或者其他库编译时,选择该地址。

3.Qt的VTK控件编译

在CMake中,选择VTK_Group_Qt,再点击Configure,此时会报错,选项中会增加Qt对应选项,根据Qt版本,选择VTK_QT_VERSION,然后选择Qt5_DIR,本人环境中选择的是D:/Qt/Qt5.9.2/5.9.2/msvc2017_64/lib/cmake/Qt5。重新Configure \ Generate \ ALL_BUILD \ INSTALL即可。
此时会生成F:\VTK\VTK-8.2.0\build\install\plugins\designer\QVTKWidgetPlugin.dll,将其复制到Qt对应目录下D:\Qt\Qt5.9.2\5.9.2\msvc2017_64\plugins\designer
此时打开Qt Designer,Widget Box中就会有QVTKWidget
三维显示及处理工具VTK——开发环境搭建(VS2017+Qt5.9.2+VTK8.2)_第4张图片
至此,已经完成了Qt 5.9.2+VTK 8.2.0的开发环境搭建。
可根据个人环境配置,进行相应调整即可。

4.VS2017+Qt+VTK环境搭建

新建的Qt图形界面中直接增加QVTKWidget,界面按照需求设计。接下来对路径设置进行记述。

  1. 项目——属性——VC++——包含目录,增加F:\VTK\VTK-8.2.0\build\install\include\vtk-8.2
  2. 库目录,增加F:\VTK\VTK-8.2.0\build\lib\Release(因为该文件夹下有QVTKWidget.lib,install下没有)。
  3. 链接器——输入——依赖附加项,增加:
vtkChartsCore-8.2.lib
vtkCommonColor-8.2.lib
vtkCommonComputationalGeometry-8.2.lib
vtkCommonCore-8.2.lib
vtkCommonDataModel-8.2.lib
vtkCommonExecutionModel-8.2.lib
vtkCommonMath-8.2.lib
vtkCommonMisc-8.2.lib
vtkCommonSystem-8.2.lib
vtkCommonTransforms-8.2.lib
vtkDICOMParser-8.2.lib
vtkDomainsChemistry-8.2.lib
vtkDomainsChemistryOpenGL2-8.2.lib
vtkdoubleconversion-8.2.lib
vtkexodusII-8.2.lib
vtkexpat-8.2.lib
vtkFiltersAMR-8.2.lib
vtkFiltersCore-8.2.lib
vtkFiltersExtraction-8.2.lib
vtkFiltersFlowPaths-8.2.lib
vtkFiltersGeneral-8.2.lib
vtkFiltersGeneric-8.2.lib
vtkFiltersGeometry-8.2.lib
vtkFiltersHybrid-8.2.lib
vtkFiltersHyperTree-8.2.lib
vtkFiltersImaging-8.2.lib
vtkFiltersModeling-8.2.lib
vtkFiltersParallel-8.2.lib
vtkFiltersParallelImaging-8.2.lib
vtkFiltersPoints-8.2.lib
vtkFiltersProgrammable-8.2.lib
vtkFiltersSelection-8.2.lib
vtkFiltersSMP-8.2.lib
vtkFiltersSources-8.2.lib
vtkFiltersStatistics-8.2.lib
vtkFiltersTexture-8.2.lib
vtkFiltersTopology-8.2.lib
vtkFiltersVerdict-8.2.lib
vtkfreetype-8.2.lib
vtkGeovisCore-8.2.lib
vtkgl2ps-8.2.lib
vtkglew-8.2.lib
vtkGUISupportQt-8.2.lib
vtkGUISupportQtSQL-8.2.lib
vtkhdf5-8.2.lib
vtkhdf5_hl-8.2.lib
vtkImagingColor-8.2.lib
vtkImagingCore-8.2.lib
vtkImagingFourier-8.2.lib
vtkImagingGeneral-8.2.lib
vtkImagingHybrid-8.2.lib
vtkImagingMath-8.2.lib
vtkImagingMorphological-8.2.lib
vtkImagingSources-8.2.lib
vtkImagingStatistics-8.2.lib
vtkImagingStencil-8.2.lib
vtkInfovisCore-8.2.lib
vtkInfovisLayout-8.2.lib
vtkInteractionImage-8.2.lib
vtkInteractionStyle-8.2.lib
vtkInteractionWidgets-8.2.lib
vtkIOAMR-8.2.lib
vtkIOAsynchronous-8.2.lib
vtkIOCityGML-8.2.lib
vtkIOCore-8.2.lib
vtkIOEnSight-8.2.lib
vtkIOExodus-8.2.lib
vtkIOExport-8.2.lib
vtkIOExportOpenGL2-8.2.lib
vtkIOExportPDF-8.2.lib
vtkIOGeometry-8.2.lib
vtkIOImage-8.2.lib
vtkIOImport-8.2.lib
vtkIOInfovis-8.2.lib
vtkIOLegacy-8.2.lib
vtkIOLSDyna-8.2.lib
vtkIOMINC-8.2.lib
vtkIOMovie-8.2.lib
vtkIONetCDF-8.2.lib
vtkIOParallel-8.2.lib
vtkIOParallelXML-8.2.lib
vtkIOPLY-8.2.lib
vtkIOSegY-8.2.lib
vtkIOSQL-8.2.lib
vtkIOTecplotTable-8.2.lib
vtkIOVeraOut-8.2.lib
vtkIOVideo-8.2.lib
vtkIOXML-8.2.lib
vtkIOXMLParser-8.2.lib
vtkjpeg-8.2.lib
vtkjsoncpp-8.2.lib
vtklibharu-8.2.lib
vtklibxml2-8.2.lib
vtklz4-8.2.lib
vtklzma-8.2.lib
vtkmetaio-8.2.lib
vtkNetCDF-8.2.lib
vtkogg-8.2.lib
vtkParallelCore-8.2.lib
vtkpng-8.2.lib
vtkproj-8.2.lib
vtkpugixml-8.2.lib
vtkRenderingAnnotation-8.2.lib
vtkRenderingContext2D-8.2.lib
vtkRenderingContextOpenGL2-8.2.lib
vtkRenderingCore-8.2.lib
vtkRenderingFreeType-8.2.lib
vtkRenderingGL2PSOpenGL2-8.2.lib
vtkRenderingImage-8.2.lib
vtkRenderingLabel-8.2.lib
vtkRenderingLOD-8.2.lib
vtkRenderingOpenGL2-8.2.lib
vtkRenderingQt-8.2.lib
vtkRenderingVolume-8.2.lib
vtkRenderingVolumeOpenGL2-8.2.lib
vtksqlite-8.2.lib
vtksys-8.2.lib
vtktheora-8.2.lib
vtktiff-8.2.lib
vtkverdict-8.2.lib
vtkViewsContext2D-8.2.lib
vtkViewsCore-8.2.lib
vtkViewsInfovis-8.2.lib
vtkViewsQt-8.2.lib
vtkzlib-8.2.lib

为了方便获取这些lib文件名,在F:\VTK\VTK-8.2.0\build\install\lib文件夹下创建一个bat脚本,命令如下:

@echo off
DIR "F:\VTK\VTK-8.2.0\build\install\lib" /B >libname.txt
pause

执行完成之后,即可得到libname.txt文件,复制其中.lib即可。

  1. F:\VTK\VTK-8.2.0\build\install\bin文件夹下所有.dll文件复制到工程输出目录下。
  2. 在main.cpp增加:
#include "vtkAutoInit.h"
VTK_MODULE_INIT(vtkRenderingOpenGL2);// VTK was built withvtkRenderingOpenGL2
VTK_MODULE_INIT(vtkInteractionStyle);
//该问题源自:https://blog.csdn.net/wanhongluli/article/details/77852843

以上就完成了VS2017+Qt 5.9.2+VTK 8.2.0的开发环境搭建。
运行效果如下:
三维显示及处理工具VTK——开发环境搭建(VS2017+Qt5.9.2+VTK8.2)_第5张图片

你可能感兴趣的:(VTK的使用)