项目中需要完成点云可视化配准软件的开发,需要用到PCL点云库完成核心的算法部分,以及Qt构造用户界面,并使用VTK在Qt中对点云效果进行三维显示。
这里对在ubuntu16.04系统中的开发环境搭建过程和遇到的问题进行记录,供大家参考。
首先在系统中安装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路径下。
从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控件了,这个控件用来在窗体中预览点云。
接下来从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文件夹,出现则说明安装成功。
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版本应该也是可以的,有兴趣的读者可以尝试一下。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)