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

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

背景

项目中需要完成点云可视化配准软件的开发,需要用到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。




在d出的选项列表中勾选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版本应该也是可以的,有兴趣的读者可以尝试一下。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/563003.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-02
下一篇 2022-04-02

发表评论

登录后才能评论

评论列表(0条)

保存