在 Qt 界面上显示点云
要在 Qt 的 GUI 界面上显示点云, 需要首先放置一个 QVTKWidget
控件, 然后通过 C++ 代码往该控件上显示点云.
但一般直接下载安装的 PCL 预编译的 3rdParty/VTK
没有该控件, 需要自己下载源码重新编译.
- Visual Studio 2017
- Qt 5.12.10
- PCL 1.8.1
- VTK 8.0.0
下载编译 VTK
下载的 VTK 版本必须和原来 PCL 预编译的版本一致.
首先将 PCL 自带的 VTK 包
%PCL_ROOT%/3rdParty/VTK
重命名为%PCL_ROOT%/3rdParty/VTK-bak
作为备份;下载 vtk-v8.0.0 - gitlab 的源码并解压到
...unpack_path/vtk-v8.0.0
;打开 CMake-Gui, 设置
Where is the source code
:...unpack_path/vtk-v8.0.0
Where to build the binaries
:...unpack_path/vtk-v8.0.0/build
;
点击
Add Entry
, 添加CMAKE_DEBUG_POSTFIX
, 类型为STRING
, 其值设置为-gd
. 这样 debug 模式编译出的库文件名会带一个-gd
, 以便与 Release 模式的库文件进行区分;点击
Configure
:Visual studio 15 2017 Win64, x64
.上一步 Configure 完成后, 更改 CMake 的配置:
- BUILD_SHARED_LIBS
- BUILD_TESTING
- BUILD_EXAMPLES
- VTK_GROUP_QT
- VTK_RENDERING_BACKEND: OpenGL2
- CMAKE_INSTALL_PREFIX:
%PCL_ROOT%/3rdParty/VTK
.
点击
configure
, 若出现错误, 将VTK_QT_VERSION
设为 5, 再 Configure.修改如下配置后继续 Configure:
QT_QMAKE_EXECUTABLE
: D:/Qt/Qt5.12.10/5.12.10/msvc2017_64/bin/qmake.exeVTK_QT_VERSION
: 5Qt5_DIR
: D:/Qt/Qt5.12.10/5.12.10/msvc2017_64/lib/cmake/Qt5Qt5Core_DIR
: D:/Qt/Qt5.12.10/5.12.10/msvc2017_64/lib/cmake/Qt5CoreQt5Gui_DIR
: D:/Qt/Qt5.12.10/5.12.10/msvc2017_64/lib/cmake/Qt5GuiQt5OpenGL_DIR
: D:/Qt/Qt5.12.10/5.12.10/msvc2017_64/lib/cmake/Qt5OpenGLQt5Sql_DIR
: D:/Qt/Qt5.12.10/5.12.10/msvc2017_64/lib/cmake/Qt5SqlQt5UiPlugin_DIR
: D:/Qt/Qt5.12.10/5.12.10/msvc2017_64/lib/cmake/Qt5UiPluginQt5Widgets_DIR
: D:/Qt/Qt5.12.10/5.12.10/msvc2017_64/lib/cmake/Qt5Widgets
如无错误(可能有 CMake Deprecation Warning, 不重要的话就不理它), 点击
Generate
, 然后Open Project
, 通过 VS 打开.在 VS 中点击
生成
->批生成
: 勾选ALL_BUILD,Debug,x64
,ALL_BUILD,Release,x64
,INSTALL,Debug,x64
,INSTALL,Release,x64
, 点击生成, 等待…在 Powershell 查看之前备份的预编译的 VTK 与新生成的 VTK 库文件:
1
2PS D:\PCL\3rdParty> tree /f /a VTK >> VTK.txt
PS D:\PCL\3rdParty> tree /f /a VTK-bak >> VTK-bak.txt用在线文本比对网站 https://www.diffchecker.com/diff 对比分析两个库文件, 发现自己编译的库比安装 PCL 时预编译的库多了大量
VTK/bin/*.dll
, 以及部分头文件(.h) 和静态库文件(.lib). 因此在配置 PCL 的时候要注意把 VTK 配置好.1
2
3
4
5
6
7
8
9vtkGUISupportQtOpenGL-8.0.lib
vtkGUISupportQtSQL-8.0.lib
vtkGUISupportQt-8.0.lib
vtkRenderingGL2PS-8.0.lib
vtkViewsQt-8.0.lib
vtkRenderingVolumeOpenGL-8.0.lib
vtkRenderingQt-8.0.lib
vtkRenderingOpenGL-8.0.lib
vtkRenderingLIC-8.0.lib把编译得到的
D:\PCL\3rdParty\VTK\plugins\designer\QVTKWidgetPlugin.dll
复制到 Qt 安装路径下D:\Qt\Qt5.12.10\5.12.10\msvc2017_64\plugins\designer\QVTKWidgetPlugin.dll
, 注意这里只要 Release 版本即可, 不要放置 debug 版本的 dll.
例程
- Qt Designer 打开 ui 文件, 在 ui 界面拖拽放置一个
qvtkWidget
控件, 并在菜单工具栏添加File
->Open
. 编译完成后可以通过 Open 打开点云*.pcd
文件并在界面上显示.
- 例程: https://github.com/siyouluo/Storage/tree/master/vs_qt_pcl
- 例程打包下载: https://github.com/siyouluo/Storage/releases/download/v1.0.0/vs_qt_pcl.zip
1 | > mkdir build |
Refer
在 Qt 界面上显示点云