PCL+QT5+VTK 的安装调通


由于项目需要,需要用到点云操作和点云显示。PCL是点云开发开源库,其中集成了多个开源开发工具,是运算操作的基础。若要进行可视化处理,需要安装QT。由于PCL自带VTK是由开源组织自行编译的,对应的QT版本可能和当前电脑所安装的QT版本不同,如果直接使用自带VTK生成项目,极大概率会出错,所以需要重新安装和编译VTK,同时需要重新指定环境变量和cmake中的库路径。
安装后我们使用pcl-visualizer程序作为样例。本文为工具链安装和环境配置,不涉及pcl-visualizer 项目本身的代码解释。
以下的安装基于Windows10,开发工具使用Visual Studio 2019。

PCL+QT5+VTK 的安装

1,安装PCL

当前我们选择最新的1.9.1,从github里面下载,在github的页面选择对应版本(1.9.1),然后在release界面找到对应的安装包:
在这里插入图片描述
下载后双击安装即可。
安装后需要设置环境变量:
添加PCL路径:Variable name: PCL_ROOT Variable Value: C:\Program Files\PCL 1.9.1
把对应的PCL库路径添加到Path:
在这里插入图片描述
此处先不需要添加VTK。

2,安装QT

我们选择安装最新的QT5。下载最新的QT5在线安装包,安装对应的库,主要需要包括Core,widget,对应需要的Visual Studio版本(一般选最新的就行了)等一些基础的内容,同时也安装designer和creator。具体如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装完成后,下载安装Qt VS Tools,注意对应的Visual Studio(此处我们选的是2019)版本:
https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools-19123

安装完成Qt VS Tools即可。
随意打开一个Solution,这时候在Visual Studio的菜单栏上会多一个Qt VS Tools的按钮:
在这里插入图片描述
依次打开Qt VS Tools -> Qt Options-> Add button,然后指定对应的Qt路径:
在这里插入图片描述
至此,Qt安装完成。此时可以在Visual Studio里面可以新建Qt的Project开发Qt桌面软件。

3,安装Cmake

从官网下载较新版本的Cmake(我们使用的是3.16.0),双击安装即可。

4,安装VTK

配置的难点在于VTK的安装。虽然官方的PCL库中里面自带了VTK,但是由于使用的版本和编译环境的关系,自带在3rdParty里面的VTK版本不可用,因此需要下载源码重新编译。
从VTK官网导航到Gitlab,找到源码下载页面,选择8.1.0下载。下载地址如下:https://gitlab.kitware.com/vtk/vtk/tree/v8.1.0
注意:由于8.2.0的代码已经修改,在vtkMapper中的类里面有几个方法被删除,所以不可使用8.2.0,否则后面的pcl-visualizer样例程序代码会出错。
解压源码,最好放在C盘根目录下,以避免因为安装路径造成的编译错误。
下步骤需仔细并严格操作:
打开Cmake,将vtk源码安装的路径填入Where is the source code,在vtk根目录下新建一个文件夹build,cmake的Where to build the binaries中填入vtk根目录下build的路径,完成后点击Configure,这时候会出现需要生成的Visual Studio项目的版本。我们这里使用的是VS2019,所以我们选择VS2019。其他选项默认(默认的机器是64位,这里请注意,如要要使用32位请选择32位),然后点击ok即可。
Configure结束后,会出现很多个选项,并且所有标为红色,红色表示正常。
接下来就是重点了,在红色选项中,处理默认勾选的项目外,还需勾选(或不勾选)和添加修改配置如下选项:

  • BUILD_SHAREED_LIBS ☑ (check) //这里一定要记得勾选,这里是提供的QVTKWidgetPlugin插件,主要用于VTK和Qt的联动,若没有勾选,解决方案生产后将不会生成此项目。
  • BUILD_TESTING ☐ (uncheck) //测试集,若勾选,会编译时会从官网下载大量测试数据,编译会变得极为漫长,所以尽量不要选。
  • CMAKE_CONFIGURATION_TYPES Debug; Release
  • CMAKE_CXX_MP_FLAG ☑ (check)
  • CMAKE_INSTALL_PREFIX C: \ Program Files \ VTK (or C: \ Program Files (x86) \ VTK) //64位项目建议安装在Program Files里面便于管理,默认是Program Files (x86),所以需要进行相应修改。
  • OPENGL_gl_LIBRARY opengl //若没发现,可以不用管
  • OPENGL_glu_LIBRARY glu32 //若没发现,可以不用管
  • VTK_Group_Qt ☑ (check)
  • VTK_QT_VERSION 5 //我们这里使用的是QT5
  • VTK_RENDERING_BACKEND OpenGL2 //可能在一些教程里面会显示使用OpenGL,但是使用OpenGL2一样可以

修改完上述内容后,需要添加额外的配置,选择Add Entry,然后填入如下内容:

Name:CMAKE_DEBUG_POSTFIX
Type:STRING
Value:-gd

在这里插入图片描述
在这里插入图片描述
完成上述步骤后,点击Generate,就会生成Visual Studio的solution。这时在vtk下的build目录中就能找到生成的.sln文件了。
生成完Cmake内容应该如下:
在这里插入图片描述
用管理员模式打开Visual Studio,然后打开上述的solution,注意,千万不要移动build文件夹到其他地方,因为cmake生成的解决方案的路径是初始设定的路径,若移动了很多链接的头文件和库会出错或丢失。
用Visual Studio打开后,在solution explorer会看到如下的项目:
在这里插入图片描述
到了这一步,需要分别生成Release和Debug的内容。
我们先选Release:
在这里插入图片描述
选完后在solution explorer下选择solution ‘VTK’ 右键,然后Build solution即可,然后就是漫长的等待。完成后,ouput会显示succeeded,0 failed。
接下来,还是在solution explorer,展开CmakePredefinedTargets,选中INSTALL,点击右键,选择Project Only->Build Only INSTALL,此时,编译器会自动的将VTK的文件安装到Program Files 的VTK目录里。
接下来,选择QVTKWidgetPlugin项目,右键,选择Project Only->Build Only QVTKWidgetPlugin。完成。
完成了Release的内容生成,接下来生成Debug内容:
在这里插入图片描述
和Release类似,先Build solution,完成编译后,选INSTALL,然后选择Project Only->Build Only INSTALL。接下来,选QVTKWidgetPlugin,然后右键,选择Project Only->Build Only QVTKWidgetPlugin,注意就完成了Debug的内容生成。
这时候,在Program Files的VTK目录下,不论bin还是lib文件夹内,会看到xx.dll或xx.lib文件和对应同名,后缀为-gd的文件(如vtkChartsCore-8.1.dll和vtkChartsCore-8.1-gd.dll)。这里说明一下,没有gd后缀的文件为Release下调用的库,带gd后缀的为Debug模式下调用的库。
还没有结束,接下来要把QVTKWidgetPlugin生成的库文件添加到QT plugin里面。回到原VTK solution所在的文件夹,将其中bin文件夹下和lib文件夹下的Release和Debug里面的QVTKWidgetPlugin.dll, QVTKWidgetPlugin-gd.dll,QVTKWidgetPlugin-gd.pdb,QVTKWidgetPlugin.lib 和QVTKWidgetPlugin-gd.lib拷贝到Qt安装目录对应的VS版本的plugin\designer目录下,路径如:C:\Qt\5.12.6\msvc2017_64\plugins\designer 。如图:
在这里插入图片描述
到此,VTK编译安装部分完成。
接下来设置环境变量:
添加
在Path里面添加:
完成环境变量添加后,需修改PLC的configure 的cmake文件,路径在:C:\Program Files\PCL 1.9.1\cmake,找到PCLConfig.cmake用记事本打开,然后找到find VTK行(这里可以直接搜索关键字VTK就可快速定位到):
在这里插入图片描述
由于PCL默认使用的VTK是PCL自带的第三方库,因此我们需要修改PCL使用的VTK版本,将内容改为:
在这里插入图片描述
这里面VTK_DIR指的是关键变量里面定义的VTK安装目录,${VTK_DIR}后面就是内容,这里主要确认对应的版本号,由于我们使用的是8.1,所以只要定位好VTK安装目录下的lib\cmake内的版本号就可以了(如果用其他版本,修改对应的路径就好了)。保存退出。
至此,所有和VTK相关的安装和配置就完成了。

生成样例项目

我们从网上下载了一个使用Qt 显示点云的样例项目,pcl-visualizer,项目需要使用cmake生成VS的solution,所以也需要配置相应。
先打开样例项目中的src文件夹下的CMakeLists.txt文件,由于项目默认的使用Qt版本为Qt4,所以很多内容需要进行修改,具体修改内容如下:

cmake_minimum_required (VERSION 2.6 FATAL_ERROR)

project      (pcl-visualizer)
#find_package (Qt4 REQUIRED)
list (APPEND CMAKE_PREFIX_PATH "C:/Qt/5.12.6/msvc2017_64/")
find_package (Qt5 COMPONENTS Widgets REQUIRED)
find_package (Qt5 COMPONENTS Core REQUIRED)
set (VTK_DIR "C:/Program Files/VTK/lib/cmake/vtk-8.1/")
#find_package (VTK REQUIRED)
find_package (PCL 1.9.1 REQUIRED)
set(QT_QMAKE_EXECUTABLE "C:/Qt/5.12.6/msvc2017_64/bin/qmake.exe")

include_directories (${PCL_INCLUDE_DIRS})
link_directories    (${PCL_LIBRARY_DIRS})
add_definitions     (${PCL_DEFINITIONS})

set  (project_SOURCES main.cpp pclviewer.cpp)
set  (project_HEADERS pclviewer.h)
set  (project_FORMS   pclviewer.ui)
#set  (VTK_LIBRARIES   vtkRendering vtkGraphics vtkHybrid QVTK)

#QT4_WRAP_CPP (project_HEADERS_MOC   ${project_HEADERS})
#QT4_WRAP_UI  (project_FORMS_HEADERS ${project_FORMS})

QT5_WRAP_CPP (project_HEADERS_MOC   ${project_HEADERS})
QT5_WRAP_UI  (project_FORMS_HEADERS ${project_FORMS})

#INCLUDE         (${QT_USE_FILE})
ADD_DEFINITIONS (${QT_DEFINITIONS})

ADD_EXECUTABLE  (pcl_visualizer ${project_SOURCES}
                                ${project_FORMS_HEADERS}
                                ${project_HEADERS_MOC})

#TARGET_LINK_LIBRARIES (pcl_visualizer ${QT_LIBRARIES} ${PCL_LIBRARIES} ${VTK_LIBRARIES})
TARGET_LINK_LIBRARIES (pcl_visualizer Qt5::Widgets ${PCL_LIBRARIES} ${VTK_LIBRARIES})

内容解释:
1)从Qt5开始,cmake内部就不自动支持了。文件原内容find_package(Qt4 REQUIRED)是从cmake的安装程序中使用原生的cmake file进行安装配置,所以使用Qt4的话可以直接使用find_package(Qt4 REQUIRED),但是用Qt5的话就无法直接使用了,需要按照上文进行修改。搜寻Qt5配置文件之前,要list (APPEND CMAKE_PREFIX_PATH “C:/Qt/5.12.6/msvc2017_64/”),目的是增加cmake的搜索位置,否则cmake程序将只在默认的目录中寻找相应的文件。
2)由于我们使用了自定的VTK,所以需要set VTK的cmake文件路径。注意,这里的VTK_DIR不是环境变量中的VTK_DIR。
3)需要加入qmake的路径,用于cmake调用编译Qt的cmake文件。
4)原VTK_LIBRARIES不需要额外定义,否则会出错,因为后面的vtkRendering等库文件在新的VTK中已经不存在了。
5)INCLUDE (${QT_USE_FILE})不需要定义,因为使用新的Qt5,所以Qt文件由Qt的make file定义完成。
6)TARGET_LINK_LIBRARIES中QT_LIBRARIES需要修改为Qt5::Widgets,原因还是因为使用了Qt5,所以定义方式发生变化。
上述的路径以自己电脑对应工具/库的位置为准。
上述修改完成后,用cmake打开项目文件夹,build位置为新建的cmake_bin。然后configure。完成后检查一下对应的库目录是否正确:
在这里插入图片描述
Install prefix不需要管。主要注意几个加载的库如Qt,VTK_DIR,OpenNI2,PLC_DIR对应的路径对不对。正确后generate就完成了解决方案的生成。
使用Visual Studio打开上面生成的解决方案,选择需要运行的模式(Release或Debug),然后在solution explorer里选择解决方案,然后build solution。在property界面里面选择startup project,选择对应运行的项目。运行项目即可。

在这里插入图片描述
至此整个环境,工具配置和项目配置的就完成了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值