ubuntu16下 Qt5.5.1 + PCL1.9 + VTK6.3 开发环境搭建 + 示例程序

背景

项目中需要完成点云可视化配准软件的开发,需要用到PCL点云库完成核心的算法部分,以及Qt构造用户界面,并使用VTK在Qt中对点云效果进行三维显示。
这里对在ubuntu16.04系统中的开发环境搭建过程和遇到的问题进行记录,供大家参考。

搭建流程

1、安装Qt

首先在系统中安装Qt,这里我选用了Qt5.5.1社区版(Community),笔者在测试5.9.1版本时发现VTK安装缺少依赖,故推荐使用Qt5.6以下的5.x版本。在ubuntu的apt-get中直接install的Qt在编辑时很卡,不好用,建议从Qt官网下载linux安装包进行图形化安装,下载地址:
https://download.qt.io/new_archive/qt/5.5/5.5.1/
请添加图片描述
选择qt-opensource-linux-x64-5.5.1.run下载64位的安装包,下载完成后直接安装,指定Qt安装的位置,默认安装在~/Qt5.5.1路径下。

2、编译VTK

从VTK官网下载源码进行编译。由于我下载的是VTK的历史版本6.3,官网已不再支持,可从VTK的Gitlab仓库中寻找并下载。地址:
https://gitlab.kitware.com/vtk/vtk/-/tags
请添加图片描述点击图中的v6.3.0进行下载。下载完成后进行编译,这里假定系统内已经安装了c++的编译环境。首先对下载包进行解压,解压后进入文件目录,创建build文件夹,使用cmake-gui进行cmake的可视化编译:

mkdir build
cd bulid
cmake-gui

如果没有cmake-gui请apt-get进行安装。打开后界面如下,设置where the source code(cmake编译位置)为下载包的文件路径vtk-v6.3.0,设置where to build the binaries(cmake构建位置)为刚才创建的build文件夹vtk-v6.3.0/build,点击configure,CmakeSetup保持默认选项,点finish。
请添加图片描述
在弹出的选项列表中勾选VTK_Group_Qt,CMAKE_BUILD_TYPE改为Release,点击configure,VTK_QT_VERSION改为5,点击configure,Qt5_DIR路径改为刚才Qt5安装目录/5.5/gcc_64/lib/cmake/Qt5,点击configure。这里需要指定Qt5路径的原因是VTK_Group_Qt的安装编译需要用到Qt5自身的库。
多次点击configure,确保没有新的红色选项出现且显示Configure done后,点击generate。Generate done即完成了camke。
进入build,发现已经cmake已经生成了Makefile,开始编译安装:

make
sudo make install

安装完成后,可打开路径查看是否成功安装,/usr/local是make install的默认安装路径。vtk的头文件应该在/usr/local/include/vtk-6.3中,库文件在/usr/local/lib/vtk-6.3中,存在文件夹即表示安装成功。
VTK安装完成后,需要将编译生成的libQVTKWidgetPlugin.so库文件复制到Qt5安装路径的/Tools/QtCreator/bin/plugins/designer中,这样就可以在Qt Designer中使用QVTKWidget控件了,这个控件用来在窗体中预览点云。
请添加图片描述

3、编译PCL

接下来从PCL的github下载PCL1.9.1的源码,下载地址:
https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.9.1
请添加图片描述下载Source code (tar.gz),解压后进入目录,同样进行cmake可视化编译:

mkdir build
cd bulid
cmake-gui

编译流程同VTK,选择对应的cmake路径和build路径,编译过程中注意勾选BUILD_visualization选项,这样才能安装PCL可视化模块。安装过程中如果报错,检查是否提示缺少依赖(如Eigen、FLANN),若缺少依赖则先编译安装对应的依赖,安装过程同上,到官网下载源码进行编译。完成cmake后进入build进行编译安装:

make
sudo make install

编译时间较长,完成后同样可检查/usr/local/include下是否出现了pcl-1.9文件夹,出现则说明安装成功。
请添加图片描述

4、创建Qt窗体工程

Qt使用特殊的qmake代码管理工具进行项目管理,而更为通用的c代码管理工具是cmake,PCL和VTK都使用cmake进行管理,因此为了将PCL和VTK引入Qt,需要使用cmake接管Qt工程,这里首先参照Qt官网的cmake教程,创建一个使用cmake管理的Qt窗体工程。
首先打开刚才安装的Qt(~/Qt5.5.1/Tools/QtCreator/bin/qtcreator),点击new project创建一个Qt Widgets Application(Qt窗体项目),使用默认选项,记住项目创建的路径。然后退出Qt,在任意路径下创建一个文件夹,可命名为qtCmakePro,将刚才项目路径文件夹下自动生成的所有文件拷贝到qtCmakePro文件夹下,因为要使用cmake管理项目,故可删除无用的csdn.pro和csdn.pro.user文件。也就是拷贝下面四个文件到qtCmakePro:
请添加图片描述
在qtCmakePro中新建CMakeLists.txt文件,输入以下内容:

cmake_minimum_required(VERSION 3.1.0)

project(helloworld VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

if(CMAKE_VERSION VERSION_LESS "3.7.0")
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()

set(Qt5_DIR ~/Qt5.5.1/5.5/gcc_64/lib/cmake/Qt5) #find Qt5Config.cmake path
find_package(Qt5 COMPONENTS Widgets REQUIRED)

add_executable(helloworld
    mainwindow.ui
    mainwindow.cpp
    main.cpp
)

target_link_libraries(helloworld Qt5::Widgets)

内容参考了官网的cmake构建教程,其中set(Qt5_DIR ~/Qt5.5.1/5.5/gcc_64/lib/cmake/Qt5)用于指定Qt5的find_package路径为我们自己的安装路径。完成后再次打开Qt,选择open project,选择刚创建的qtCmakePro中的CMakeLists.txt打开,选择执行cmake,编译无问题即成功构建了cmake管理的qt窗体工程。
随后将VTK和PCL引入此Qt窗体的开发环境中,将CMakeLists.txt修改为如下内容:

cmake_minimum_required(VERSION 3.1.0)

project(helloworld VERSION 1.0.0 LANGUAGES CXX)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

if(CMAKE_VERSION VERSION_LESS "3.7.0")
    set(CMAKE_INCLUDE_CURRENT_DIR ON)
endif()

set(Qt5_DIR ~/Qt5.5.1/5.5/gcc_64/lib/cmake/Qt5) #find Qt5Config.cmake path
find_package(Qt5 COMPONENTS Widgets REQUIRED)

set(VTK_DIR /usr/local/lib/cmake/vtk-6.3) #find VTKConfig.cmake path
find_package(VTK REQUIRED)

set(PCL_DIR /usr/local/share/pcl-1.9) #find pcl-1.9Config.cmake path
find_package(PCL REQUIRED)

include(${VTK_USE_FILE})#load VTK path variables

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

include_directories(${VTK_INCLUDES})
add_executable(helloworld
    mainwindow.ui
    mainwindow.cpp
    main.cpp
)

target_link_libraries(helloworld Qt5::Widgets ${PCL_LIBRARIES} ${VTK_LIBRARIES})

检查Qt、VTK和PCL各自的Config.cmake的路径是否指定正确,工程构建未报错说明所有环境配置成功,可试运行工程:
请添加图片描述

功能测试

现在就可以实现简单的pcd点云文件导入并可视化:
请添加图片描述
简单点云可视化的示例代码下载地址:
https://github.com/zhou000lq/qt-pcd-demo

总结

此开发环境的搭建与ubuntu的版本不强相关。整个过程涉及到c++编译,linux文件系统构成,cmake等的知识。
此外,使用其他的PCL和VTK版本应该也是可以的,有兴趣的读者可以尝试一下。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值