一、QVTKWidget、QVTKWidget2、QVTKOpenGLWidget、QVTKOpenGLNativeWidget 区别
1.Qt版本
Qt5.4以前版本:QVTKWidget2/QVTKWidget。
Qt5.4以后版本:QVTKOpenGLWidget/QVTKOpenGLWidget。
2.VTK版本(Qt版本为5.4之后)
在VTK8.2以前的版本:QVTKOpenGLWidget;
在VTK8.2及以后的版本里:QVTKOpenGLNativeWidget;
QVTKWidget:目前了解到的只可显示点云,没有在网上找到显示模型的例子。
QVTKOpenGLNativeWidget:既可显示点云又可显示模型。
推荐直接下载pcl1.13+vtk8.2,直接使用QVTKOpenGLNativeWidget,不要像我之前一样看网上大多是vtk7.1+pcl1.9就下载了这个,然后不满足需求了又卸载重新下载高版本。
二、安装qt
利用命令安装ubuntu18.04默认支持的qt版本5.9.5,如果需要更高版本,直接去QT官网下载安装包即可。
依赖
sudo apt install build-essential
sudo apt install cmake
sudo apt install qt5-default qtbase5-dev
sudo apt install qtcreator
IDE 文档
sudo apt install qt5tools-dev qt5tools-dev-tools qt5tools-doc qt5tools-examples
版本管理工具
sudo apt install qtchooser
二、安装vtk8.2
官网地址:Download | VTK
下载8.2版本源码
解压之后进入到该文件夹下,
然后按照以下步骤执行:
其中/usr/lib/qt5/bin/qmake为QT的qmake的安装目录,/usr/lib/x86_64-linux-gnu/cmake为QT中指示CMake在查找包和项目所需库文件时的路径,我的是用系统命令安装的QT,所以目录在系统目录下。如果是下载安装包安装QT可以看自己放置的目录是什么(我看网上大多是qmake在/opt/Qt5.12.9/5.12.9/gcc_64/bin/qmake,cmake在/opt/Qt5.12.9/5.12.9/gcc_64/lib/cmake)。为确保正确在执行之前去相应目录下查看以下是否有qmake和cmake。
mkdir release
cd release
cmake -DVTK_QT_VERSION:STRING=5 \
-DQT_QMAKE_EXECUTABLE:PATH=/usr/lib/qt5/bin/qmake \
-DVTK_Group_Qt:BOOL=ON \
-DCMAKE_PREFIX_PATH:PATH=/usr/lib/x86_64-linux-gnu/cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DBUILD_SHARED_LIBS:BOOL=ON ..make
sudo make install
注意:一定要加cmake后的配置项,不加的话不会生成 libQVTKWidgetPlugin.so库。( libQVTKWidgetPlugin.so库只用于在QtCreator设计界面的可拖拽生成控件处添加该控件)
安装完成之后将QVTKWidget添加到QtCreator ,执行下面命令查找路径
sudo find / -name libQVTKWidgetPlugin.so
可以看到目录为:
/usr/local/plugins/designer/libQVTKWidgetPlugin.so
将libQVTKWidgetPlugin.so复制到QT的相关库路径下。
由于我是用命令直接下载的QT,移动到的目录如下:
/usr/lib/x86_64-linux-gnu/qt5/plugins/designer/
/usr/lib/x86_64-linux-gnu/qtcreator/plugins/
如果是下载安装包安装的QT可以看自己放置的目录是什么,网上大多是:
/opt/Qt5.12.9/5.12.9/gcc_64/plugins/designer/
/opt/Qt5.12.9/Tools/QtCreator/lib/Qt/plugins/designer/
以上就安装完成了。
安装过程中遇到的问题
问题1
vtk CMake Error at Rendering/OpenGL2/CMakeLists.txt:154 (message): X11_Xt_LIB could not be found. Required for VTK X lib.
解决:
sudo apt-get install libxt-dev
问题2
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake:26 (find_package):
Could not find a package configuration file provided by "Qt5X11Extras" with
any of the following names:
Qt5X11ExtrasConfig.cmake
qt5x11extras-config.cmake
Add the installation prefix of "Qt5X11Extras" to CMAKE_PREFIX_PATH or set
"Qt5X11Extras_DIR" to a directory containing one of the above files. If
"Qt5X11Extras" provides a separate development package or SDK, be sure it
has been installed.
Call Stack (most recent call first):
VTK/GUISupport/Qt/CMakeLists.txt:69 (find_package)
解决:
sudo apt install libqt5x11extras5-dev
问题3
CMake Error at /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake:26 (find_package): Could not find a package configuration file provided by “Qt5UiPlugin” with any of the following names:
Qt5UiPluginConfig.cmake
qt5uiplugin-config.cmake
Add the installation prefix of “Qt5UiPlugin” to CMAKE_PREFIX_PATH or set “Qt5UiPlugin_DIR” to a directory containing one of the above files. If “Qt5UiPlugin” provides a separate development package or SDK, be sure it has been installed.
解决:
sudo apt-get install qttools5-dev
问题4
CMake Error at CMakeLists.txt:156 (export):
export EXPORT or TARGETS specifier missing.
解决:
把这个地方调整如下:
if (_vtk_compiletools_targets)
list(REMOVE_DUPLICATES _vtk_compiletools_targets)
export(TARGETS ${_vtk_compiletools_targets}
FILE ${VTK_BINARY_DIR}/VTKCompileToolsConfig.cmake)
add_dependencies(vtkCompileTools ${_vtk_compiletools_targets})
endif()
也就是把156,157行挪到endif中,保存后再来Configure。
三、安装pcl1.13
先安装依赖
sudo apt-get update
sudo apt-get install git build-essential
sudo apt-get install cmake cmake-gui
sudo apt-get install libflann1.9 libflann-dev
sudo apt-get install libeigen3-dev
sudo apt-get install libboost-all-dev
源码地址:https://github.com/PointCloudLibrary/pcl.git
去git上直接下载1.13.1版本源码,解压之后进入该目录下。
执行下面命令
mkdir release
cd release
cmake -DCMAKE_BUILD_TYPE=None \
-DCMAKE_INSTALL_PREFIX=/usr/local \
-DBUILD_GPU=ON \
-DBUILD_apps=ON \
-DBUILD_examples=ON ..
make
sudo make install
以上就安装完成了。到此vtk和pcl就都安装完成了。
安装成功验证:
在pcl目录下打开终端,执行命令:
pcl_viewer 点云文件名
注意:运行该命令时可能会报下面错误
pcl_viewer: error while loading shared libraries: libvtksys-8.2.so.1: cannot open shared object file: No such file or directory
原因和解决办法可以查看下面链接
error while loading shared libraries:-CSDN博客
四、卸载vtk
1.利用sudo apt-get install libvtk7.1-qt libvtk7.1 libvtk7-qt-dev安装的依赖
直接执行命令即可
sudo apt-get remove libvtk7*
2.删除库和头文件
在计算机中查找vtk安装的内容及相应位置,执行命令删除。
一定要谨慎谨慎再谨慎!!!!确定好之后在删除,sudo命令不可撤回。
sudo rm -rf /usr/local/include/vtk-8.2/
sudo rm -f /usr/local/lib/libvtk*-8.2.*
五、卸载pcl
在计算机中查找pcl安装的内容及相应位置,然后直接执行命令。
直接在编译的文件夹下(我的是release)执行卸载命令
sudo make uninstall
一定要谨慎谨慎再谨慎!!!!确定好之后在删除,sudo命令不可撤回。
sudo rm -rf /usr/local/include/pcl-1.9/
sudo rm -rf /usr/local/share/pcl-1.9/
sudo rm -rf /usr/local/bin/pcl*
sudo rm -rf /usr/local/lib/libpcl*