三維顯示及處理工具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中按照需求,設置對應地址和平臺。
    在這裏插入圖片描述

  4. Configure——Generate——Open Project
    CMAKE_INSTALL_PREFIX設置到install文件夾,點擊Configure,稍等片刻即可完成配置,出現“Configuring done”,則說明配置無誤。之後Generate,最後Open Project。這樣就完成了在VS2017開發環境下的VTK工程搭建。
    在這裏插入圖片描述

  5. 編譯+安裝
    在VS2017中打開了工程,將工程切換到release+x64
    在這裏插入圖片描述
    之後編譯ALL_BUILD,編譯需要花費一段時間,耐心等待(可以寫寫博客、看看文章)。
    在這裏插入圖片描述
    所有內容編譯通過即得到相應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
在這裏插入圖片描述
至此,已經完成了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的開發環境搭建。
運行效果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章