用Qt配置PCL显示点云过程记录【点云处理】

我的配置版本和环境:Win10+Qt5.9.4+PCL1.8.1+VTK8.0.0+Cmake
我建议大家用这个版本的,最新版本的容易出问题,PCL1.8.1与VTK8.0.0是搭配着使用的。

一、软件的下载

我们所需要的软件主要是下面几个:

1、 VS2015安装教程:传送门
百度网盘链接:https://pan.baidu.com/s/1saTI3OscsN4uiMdjCL80pA
提取码:s5g9
激活码:HMGNV-WCYXV-X7G9W-YCX63-B98R2
2、 Qt5.9.4:Qt虽然说没有VS那么普遍,但是其功能的强大是毋庸置疑的,我用的版本是5.9.4,
下载地址:http://download.qt.io/archive/qt/
百度网盘链接:https://pan.baidu.com/s/1cTpDxtqpoeVUZsdoEp0I1Q
提取码:yc8v
3、 PCL1.8.1
下载地址:https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.8.1
4、 cmake下载地址:https://cmake.org/download/
百度网盘:https://pan.baidu.com/s/1uZm0YHrzV6ejZN4eyjCyBw
提取码:7jvz
5、VTK8.0.0下载地址:https://gitlab.kitware.com/vtk/vtk/tree/v8.0.0
至此我们所需要的所有软件都已经罗列完毕,在这要特意说明一下,因为我的系统是64位Windows10系统,所以上述的软件都是64位Windows软件。
大家要是积分多也可以支持一下我,去我博客直接下载资源。

二、安装VS2015和Qt5.9.4

这个不多说,网上教程很多,前面有安装教程的链接,可以打开直接用。

安装Qt5.9.4
下载完成后,双击安装:
在这里插入图片描述
一直下一步
选择组件:
在这里插入图片描述
然后继续安装,直到安装完成。

三、安装pcl1.8.1

安装pcl1.8.1的安装过程比较简单,一般下一步即可
但是一定要注意下面几点:
1、安装过程中不要忘记将PCL的安装目录添加到系统变量中去。
在这里插入图片描述
2、安装的路径中尽量不要有空格,据说这是因为Qt会把空格两边的字符串分开看成两个字符串,这就会使得之后为Qt添加PCL的头文件是造成麻烦。
在这里插入图片描述如果你已经安装好了,那只要把安装路径中的PCL 1.8.1中间的空格删掉就行了。
在这里插入图片描述
我当时虽然按照网上的说明删掉了pcl 1.8.1中的空格,但是没想到Pragram Files中间也有空格,要注意一下。

3、安装过程中会出现让我们安装OpenNI2的界面,尽量把其安装路径放到…\PCL1.8.1\3rdParty\OpenNI2中,方便之后的使用和管理。
4、安装完成之后,手动添加系统变量
在这里插入图片描述
5、PCL1.8.1安装完成后将 pcl-1.8.1-pdb-msvc2015-win64里面的文件复制到刚才安装目录的PCL1.8.1的lib里面。

三、Qt配置PCL

接下来是最重要的了,就是把pcl中的头文件和库文件添加到Qt的项目中去,步骤如下:
1、新建一个Qt控制台程序,如下所示:
在这里插入图片描述
然后点下一步即可
在这里选择
在这里插入图片描述
在这里插入图片描述
2、为了考虑到日后使用PCL的方便,所以我就按照网上的教程建立个.pri文件,这个文件有点像VS中的.props文件(属性表文件),如下所示:
(1)新建一个.txt文件,取名pcl,将.txt后缀改为.pri。
(2)用记事本打开pcl.pri文件,向其中添加pcl的头文件和库文件路径,如下所示:
在这里插入图片描述
添加路径如下:

INCLUDEPATH += C:\PCL\PCL1.8.1\include\pcl-1.8

INCLUDEPATH += C:\PCL\PCL1.8.1\include\pcl-1.8\pcl

INCLUDEPATH += C:\PCL\PCL1.8.1\3rdParty\Boost\include\boost-1_64

INCLUDEPATH += C:\PCL\PCL1.8.1\3rdParty\Boost\include\boost-1_64\boost

INCLUDEPATH += C:\PCL\PCL1.8.1\3rdParty\Eigen\eigen3

INCLUDEPATH += C:\PCL\PCL1.8.1\3rdParty\FLANN\include

INCLUDEPATH += C:\PCL\PCL1.8.1\3rdParty\FLANN\include\flann

INCLUDEPATH += C:\PCL\PCL1.8.1\3rdParty\OpenNI2\Include

INCLUDEPATH += C:\PCL\PCL1.8.1\3rdParty\Qhull\include

INCLUDEPATH += C:\PCL\PCL1.8.1\3rdParty\VTK\include\vtk-8.0

CONFIG(debug,debug|release){
LIBS += -LC:\PCL\PCL1.8.1\lib\
        -lpcl_common_debug\
        -lpcl_features_debug\
        -lpcl_filters_debug\
        -lpcl_io_debug\
        -lpcl_io_ply_debug\
        -lpcl_kdtree_debug\
        -lpcl_keypoints_debug\
        -lpcl_ml_debug\
        -lpcl_octree_debug\
        -lpcl_outofcore_debug\
        -lpcl_people_debug\
        -lpcl_recognition_debug\
        -lpcl_registration_debug\
        -lpcl_sample_consensus_debug\
        -lpcl_search_debug\
        -lpcl_segmentation_debug\
        -lpcl_stereo_debug\
        -lpcl_surface_debug\
        -lpcl_tracking_debug\
        -lpcl_visualization_debug

LIBS += -LC:\PCL\PCL1.8.1\3rdParty\Boost\lib\
        -llibboost_atomic-vc140-mt-gd-1_64\
        -llibboost_bzip2-vc140-mt-gd-1_64\
        -llibboost_chrono-vc140-mt-gd-1_64\
        -llibboost_container-vc140-mt-gd-1_64\
        -llibboost_context-vc140-mt-gd-1_64\
        -llibboost_coroutine-vc140-mt-gd-1_64\
        -llibboost_date_time-vc140-mt-gd-1_64\
        -llibboost_exception-vc140-mt-gd-1_64\
        -llibboost_fiber-vc140-mt-gd-1_64\
        -llibboost_filesystem-vc140-mt-gd-1_64\
        -llibboost_graph-vc140-mt-gd-1_64\
        -llibboost_graph_parallel-vc140-mt-gd-1_64\
        -llibboost_iostreams-vc140-mt-gd-1_64\
        -llibboost_locale-vc140-mt-gd-1_64\
        -llibboost_log-vc140-mt-gd-1_64\
        -llibboost_log_setup-vc140-mt-gd-1_64\
        -llibboost_math_c99-vc140-mt-gd-1_64\
        -llibboost_math_c99f-vc140-mt-gd-1_64\
        -llibboost_math_c99l-vc140-mt-gd-1_64\
        -llibboost_math_tr1-vc140-mt-gd-1_64\
        -llibboost_math_tr1f-vc140-mt-gd-1_64\
        -llibboost_math_tr1l-vc140-mt-gd-1_64\
        -llibboost_mpi-vc140-mt-gd-1_64\
        -llibboost_numpy-vc140-mt-gd-1_64\
        -llibboost_numpy3-vc140-mt-gd-1_64\
        -llibboost_prg_exec_monitor-vc140-mt-gd-1_64\
        -llibboost_program_options-vc140-mt-gd-1_64\
        -llibboost_python-vc140-mt-gd-1_64\
        -llibboost_python3-vc140-mt-gd-1_64\
        -llibboost_random-vc140-mt-gd-1_64\
        -llibboost_regex-vc140-mt-gd-1_64\
        -llibboost_serialization-vc140-mt-gd-1_64\
        -llibboost_signals-vc140-mt-gd-1_64\
        -llibboost_system-vc140-mt-gd-1_64\
        -llibboost_test_exec_monitor-vc140-mt-gd-1_64\
        -llibboost_thread-vc140-mt-gd-1_64\
        -llibboost_timer-vc140-mt-gd-1_64\
        -llibboost_type_erasure-vc140-mt-gd-1_64\
        -llibboost_unit_test_framework-vc140-mt-gd-1_64\
        -llibboost_wave-vc140-mt-gd-1_64\
        -llibboost_wserialization-vc140-mt-gd-1_64\
        -llibboost_zlib-vc140-mt-gd-1_64

LIBS += -LC:\PCL\PCL1.8.1\3rdParty\FLANN\lib\
        -lflann-gd\
        -lflann_cpp-gd\
        -lflann_cpp_s-gd\
        -lflann_s-gd

LIBS += -LC:\PCL\PCL1.8.1\3rdParty\OpenNI2\Lib\
        -lOpenNI2

LIBS += -LC:\PCL\PCL1.8.1\3rdParty\Qhull\lib\
        -lqhull_d\
        -lqhullcpp_d\
        -lqhullstatic_d\
        -lqhullstatic_r_d\
        -lqhull_p_d\
        -lqhull_r_d

LIBS += -LC:\Qt\Qt5.9.4\5.9.4\msvc2015_64\lib\
        -lQt5OpenGL

LIBS += -LC:\PCL\PCL1.8.1\3rdParty\VTK\lib\
        -lvtkalglib-8.0-gd\
        -lvtkChartsCore-8.0-gd\
        -lvtkCommonColor-8.0-gd\
        -lvtkCommonComputationalGeometry-8.0-gd\
        -lvtkCommonCore-8.0-gd\
        -lvtkCommonDataModel-8.0-gd\
        -lvtkCommonExecutionModel-8.0-gd\
        -lvtkCommonMath-8.0-gd\
        -lvtkCommonMisc-8.0-gd\
        -lvtkCommonSystem-8.0-gd\
        -lvtkCommonTransforms-8.0-gd\
        -lvtkDICOMParser-8.0-gd\
        -lvtkDomainsChemistry-8.0-gd\
        -lvtkexoIIc-8.0-gd\
        -lvtkexpat-8.0-gd\
        -lvtkFiltersAMR-8.0-gd\
        -lvtkFiltersCore-8.0-gd\
        -lvtkFiltersExtraction-8.0-gd\
        -lvtkFiltersFlowPaths-8.0-gd\
        -lvtkFiltersGeneral-8.0-gd\
        -lvtkFiltersGeneric-8.0-gd\
        -lvtkFiltersGeometry-8.0-gd\
        -lvtkFiltersHybrid-8.0-gd\
        -lvtkFiltersHyperTree-8.0-gd\
        -lvtkFiltersImaging-8.0-gd\
        -lvtkFiltersModeling-8.0-gd\
        -lvtkFiltersParallel-8.0-gd\
        -lvtkFiltersParallelImaging-8.0-gd\
        -lvtkFiltersPoints-8.0-gd\
        -lvtkFiltersProgrammable-8.0-gd\
        -lvtkFiltersSelection-8.0-gd\
        -lvtkFiltersSMP-8.0-gd\
        -lvtkFiltersSources-8.0-gd\
        -lvtkFiltersStatistics-8.0-gd\
        -lvtkFiltersTexture-8.0-gd\
        -lvtkFiltersTopology-8.0-gd\
        -lvtkFiltersVerdict-8.0-gd\
        -lvtkfreetype-8.0-gd\
        -lvtkGeovisCore-8.0-gd\
        -lvtkgl2ps-8.0-gd\
        -lvtkGUISupportQt-8.0-gd\
        -lvtkGUISupportQtOpenGL-8.0-gd\
        -lvtkGUISupportQtSQL-8.0-gd\
        -lvtkhdf5-8.0-gd\
        -lvtkhdf5_hl-8.0-gd\
        -lvtkImagingColor-8.0-gd\
        -lvtkImagingCore-8.0-gd\
        -lvtkImagingFourier-8.0-gd\
        -lvtkImagingGeneral-8.0-gd\
        -lvtkImagingHybrid-8.0-gd\
        -lvtkImagingMath-8.0-gd\
        -lvtkImagingMorphological-8.0-gd\
        -lvtkImagingSources-8.0-gd\
        -lvtkImagingStatistics-8.0-gd\
        -lvtkImagingStencil-8.0-gd\
        -lvtkInfovisCore-8.0-gd\
        -lvtkInfovisLayout-8.0-gd\
        -lvtkInteractionImage-8.0-gd\
        -lvtkInteractionStyle-8.0-gd\
        -lvtkInteractionWidgets-8.0-gd\
        -lvtkIOAMR-8.0-gd\
        -lvtkIOCore-8.0-gd\
        -lvtkIOEnSight-8.0-gd\
        -lvtkIOExodus-8.0-gd\
        -lvtkIOExport-8.0-gd\
        -lvtkIOExportOpenGL-8.0-gd\
        -lvtkIOGeometry-8.0-gd\
        -lvtkIOImage-8.0-gd\
        -lvtkIOImport-8.0-gd\
        -lvtkIOInfovis-8.0-gd\
        -lvtkIOLegacy-8.0-gd\
        -lvtkIOLSDyna-8.0-gd\
        -lvtkIOMINC-8.0-gd\
        -lvtkIOMovie-8.0-gd\
        -lvtkIONetCDF-8.0-gd\
        -lvtkIOParallel-8.0-gd\
        -lvtkIOParallelXML-8.0-gd\
        -lvtkIOPLY-8.0-gd\
        -lvtkIOSQL-8.0-gd\
        -lvtkIOTecplotTable-8.0-gd\
        -lvtkIOVideo-8.0-gd\
        -lvtkIOXML-8.0-gd\
        -lvtkIOXMLParser-8.0-gd\
        -lvtkjpeg-8.0-gd\
        -lvtkjsoncpp-8.0-gd\
        -lvtklibharu-8.0-gd\
        -lvtklibxml2-8.0-gd\
        -lvtklz4-8.0-gd\
        -lvtkmetaio-8.0-gd\
        -lvtkNetCDF-8.0-gd\
        -lvtknetcdf_c++-gd\
        -lvtkoggtheora-8.0-gd\
        -lvtkParallelCore-8.0-gd\
        -lvtkpng-8.0-gd\
        -lvtkproj4-8.0-gd\
        -lvtkRenderingAnnotation-8.0-gd\
        -lvtkRenderingContext2D-8.0-gd\
        -lvtkRenderingContextOpenGL-8.0-gd\
        -lvtkRenderingCore-8.0-gd\
        -lvtkRenderingFreeType-8.0-gd\
        -lvtkRenderingGL2PS-8.0-gd\
        -lvtkRenderingImage-8.0-gd\
        -lvtkRenderingLabel-8.0-gd\
        -lvtkRenderingLIC-8.0-gd\
        -lvtkRenderingLOD-8.0-gd\
        -lvtkRenderingOpenGL-8.0-gd\
#        -lvtkRenderingQt-8.0-gd\			
        -lvtkRenderingVolume-8.0-gd\
        -lvtkRenderingVolumeOpenGL-8.0-gd\
        -lvtksqlite-8.0-gd\
        -lvtksys-8.0-gd\
        -lvtktiff-8.0-gd\
        -lvtkverdict-8.0-gd\
        -lvtkViewsContext2D-8.0-gd\
        -lvtkViewsCore-8.0-gd\
        -lvtkViewsInfovis-8.0-gd\
#        -lvtkViewsQt-8.0-gd\
        -lvtkzlib-8.0-gd
} else {
LIBS += -LC:\PCL\PCL1.8.1\lib\
        -lpcl_common_release\
        -lpcl_features_release\
        -lpcl_filters_release\
        -lpcl_io_ply_release\
        -lpcl_io_release\
        -lpcl_kdtree_release\
        -lpcl_keypoints_release\
        -lpcl_ml_release\
        -lpcl_octree_release\
        -lpcl_outofcore_release\
        -lpcl_people_release\
        -lpcl_recognition_release\
        -lpcl_registration_release\
        -lpcl_sample_consensus_release\
        -lpcl_search_release\
        -lpcl_segmentation_release\
        -lpcl_stereo_release\
        -lpcl_surface_release\
        -lpcl_tracking_release\
        -lpcl_visualization_release

LIBS += -LC:\PCL\PCL1.8.1\3rdParty\Boost\lib\
        -llibboost_atomic-vc140-mt-1_64\
        -llibboost_bzip2-vc140-mt-1_64\
        -llibboost_chrono-vc140-mt-1_64\
        -llibboost_container-vc140-mt-1_64\
        -llibboost_context-vc140-mt-1_64\
        -llibboost_coroutine-vc140-mt-1_64\
        -llibboost_date_time-vc140-mt-1_64\
        -llibboost_exception-vc140-mt-1_64\
        -llibboost_fiber-vc140-mt-1_64\
        -llibboost_filesystem-vc140-mt-1_64\
        -llibboost_graph-vc140-mt-1_64\
        -llibboost_graph_parallel-vc140-mt-1_64\
        -llibboost_iostreams-vc140-mt-1_64\
        -llibboost_locale-vc140-mt-1_64\
        -llibboost_log-vc140-mt-1_64\
        -llibboost_log_setup-vc140-mt-1_64\
        -llibboost_math_c99-vc140-mt-1_64\
        -llibboost_math_c99f-vc140-mt-1_64\
        -llibboost_math_c99l-vc140-mt-1_64\
        -llibboost_math_tr1-vc140-mt-1_64\
        -llibboost_math_tr1f-vc140-mt-1_64\
        -llibboost_math_tr1l-vc140-mt-1_64\
        -llibboost_mpi-vc140-mt-1_64\
        -llibboost_numpy-vc140-mt-1_64\
        -llibboost_numpy3-vc140-mt-1_64\
        -llibboost_prg_exec_monitor-vc140-mt-1_64\
        -llibboost_program_options-vc140-mt-1_64\
        -llibboost_python-vc140-mt-1_64\
        -llibboost_python3-vc140-mt-1_64\
        -llibboost_random-vc140-mt-1_64\
        -llibboost_regex-vc140-mt-1_64\
        -llibboost_serialization-vc140-mt-1_64\
        -llibboost_signals-vc140-mt-1_64\
        -llibboost_system-vc140-mt-1_64\
        -llibboost_test_exec_monitor-vc140-mt-1_64\
        -llibboost_thread-vc140-mt-1_64\
        -llibboost_timer-vc140-mt-1_64\
        -llibboost_type_erasure-vc140-mt-1_64\
        -llibboost_unit_test_framework-vc140-mt-1_64\
        -llibboost_wave-vc140-mt-1_64\
        -llibboost_wserialization-vc140-mt-1_64\
        -llibboost_zlib-vc140-mt-1_64

LIBS += -LC:\PCL\PCL1.8.1\3rdParty\FLANN\lib\
        -lflann\
        -lflann_cpp\
        -lflann_cpp_s\
        -lflann_s

LIBS += -LC:\PCL\PCL1.8.1\3rdParty\OpenNI2\Lib\
        -lOpenNI2

LIBS += -LC:\PCL\PCL1.8.1\3rdParty\Qhull\lib\
        -lqhull\
        -lqhullcpp\
        -lqhullstatic\
        -lqhullstatic_r\
        -lqhull_p\
        -lqhull_r

LIBS += -LC:\PCL\PCL1.8.1\3rdParty\VTK\lib\
        -lvtkalglib-8.0\
        -lvtkChartsCore-8.0\
        -lvtkCommonColor-8.0\
        -lvtkCommonComputationalGeometry-8.0\
        -lvtkCommonCore-8.0\
        -lvtkCommonDataModel-8.0\
        -lvtkCommonExecutionModel-8.0\
        -lvtkCommonMath-8.0\
        -lvtkCommonMisc-8.0\
        -lvtkCommonSystem-8.0\
        -lvtkCommonTransforms-8.0\
        -lvtkDICOMParser-8.0\
        -lvtkDomainsChemistry-8.0\
        -lvtkDomainsChemistryOpenGL2-8.0\
        -lvtkexoIIc-8.0\
        -lvtkexpat-8.0\
        -lvtkFiltersAMR-8.0\
        -lvtkFiltersCore-8.0\
        -lvtkFiltersExtraction-8.0\
        -lvtkFiltersFlowPaths-8.0\
        -lvtkFiltersGeneral-8.0\
        -lvtkFiltersGeneric-8.0\
        -lvtkFiltersGeometry-8.0\
        -lvtkFiltersHybrid-8.0\
        -lvtkFiltersHyperTree-8.0\
        -lvtkFiltersImaging-8.0\
        -lvtkFiltersModeling-8.0\
        -lvtkFiltersParallel-8.0\
        -lvtkFiltersParallelImaging-8.0\
        -lvtkFiltersProgrammable-8.0\
        -lvtkFiltersSelection-8.0\
        -lvtkFiltersSMP-8.0\
        -lvtkFiltersSources-8.0\
        -lvtkFiltersStatistics-8.0\
        -lvtkFiltersTexture-8.0\
        -lvtkFiltersVerdict-8.0\
        -lvtkfreetype-8.0\
        -lvtkGeovisCore-8.0\
        -lvtkglew-8.0\
        -lvtkGUISupportQt-8.0\
        -lvtkGUISupportQtSQL-8.0\
        -lvtkhdf5-8.0\
        -lvtkhdf5_hl-8.0\
        -lvtkImagingColor-8.0\
        -lvtkImagingCore-8.0\
        -lvtkImagingFourier-8.0\
        -lvtkImagingGeneral-8.0\
        -lvtkImagingHybrid-8.0\
        -lvtkImagingMath-8.0\
        -lvtkImagingMorphological-8.0\
        -lvtkImagingSources-8.0\
        -lvtkImagingStatistics-8.0\
        -lvtkImagingStencil-8.0\
        -lvtkInfovisCore-8.0\
        -lvtkInfovisLayout-8.0\
        -lvtkInteractionImage-8.0\
        -lvtkInteractionStyle-8.0\
        -lvtkInteractionWidgets-8.0\
        -lvtkIOAMR-8.0\
        -lvtkIOCore-8.0\
        -lvtkIOEnSight-8.0\
        -lvtkIOExodus-8.0\
        -lvtkIOExport-8.0\
        -lvtkIOGeometry-8.0\
        -lvtkIOImage-8.0\
        -lvtkIOImport-8.0\
        -lvtkIOInfovis-8.0\
        -lvtkIOLegacy-8.0\
        -lvtkIOLSDyna-8.0\
        -lvtkIOMINC-8.0\
        -lvtkIOMovie-8.0\
        -lvtkIONetCDF-8.0\
        -lvtkIOParallel-8.0\
        -lvtkIOParallelXML-8.0\
        -lvtkIOPLY-8.0\
        -lvtkIOSQL-8.0\
        -lvtkIOVideo-8.0\
        -lvtkIOXML-8.0\
        -lvtkIOXMLParser-8.0\
        -lvtkjpeg-8.0\
        -lvtkjsoncpp-8.0\
        -lvtklibxml2-8.0\
        -lvtkmetaio-8.0\
        -lvtkNetCDF-8.0\
#        -lvtkNetCDF_c++-8.0\		#因为我的VTK库文件中不存在该文件,所以把它注释掉
        -lvtkoggtheora-8.0\
        -lvtkParallelCore-8.0\
        -lvtkpng-8.0\
        -lvtkproj4-8.0\
        -lvtkRenderingAnnotation-8.0\
        -lvtkRenderingContext2D-8.0\
        -lvtkRenderingContextOpenGL2-8.0\
        -lvtkRenderingCore-8.0\
        -lvtkRenderingFreeType-8.0\
        -lvtkRenderingImage-8.0\
        -lvtkRenderingLabel-8.0\
        -lvtkRenderingLOD-8.0\
        -lvtkRenderingOpenGL2-8.0\
        -lvtkRenderingQt-8.0\
        -lvtkRenderingVolume-8.0\
        -lvtkRenderingVolumeOpenGL2-8.0\
        -lvtksqlite-8.0\
        -lvtksys-8.0\
        -lvtktiff-8.0\
        -lvtkverdict-8.0\
        -lvtkViewsContext2D-8.0\
        -lvtkViewsCore-8.0\
        -lvtkViewsInfovis-8.0\
        -lvtkViewsQt-8.0\
        -lvtkzlib-8.0
}

具体的路径要按照自己安装的路径来改一下就行了,现在的软件基本都有替换功能,将上述路径中的C:\PCL替换成你的安装路径就没问题了。

文档内关键字解释如下:
·INCLUDEPATH:当你要编译项目时,通过这个关键字你可以指定需要搜索的#include目录(头文件目录)。
·LIBS:指定要链接到项目中的库列表。如果你是用了Unix系统中的-l和-L符号,那么qmake编译工具就会在Windows系统上正确的处理这些库(即将库的绝对路径传递给链接器)。这个库必须存在,qmake编译工具才可以找到-l库所在的目录位置。

2、双击.pro文件,在文件中的末尾向其中添加PCL的头文件和库文件的路径,如下所示:
在这里插入图片描述
在这里插入图片描述
如果你的文件在项目文件夹中,则直接就可以使用include(pcl.pri)就可以了。
4、做完上述的工作之后,我们不要忘了右击项目名,点击执行qmake,如下所示:
在这里插入图片描述
执行之后pcl.pri文件也就自动添加到项目中去了,如下所示:
在这里插入图片描述

最后送上Cmake编译的VTK8.0.0

四、VTK8.0.0重新编译(使用cmake工具)

1、将我们下载好的cmake安装包解压,解压之后找到cmake-gui.exe文件。
在这里插入图片描述
2、双击该文件,会出现下面的界面。
在这里插入图片描述
3、设置输入输出路径并配置生成器信息(注意:输入输出的路径尽可能的不要出现中文名称,因为这可能导致路径乱码,以至于之后再生成库文件的过程中出现错误)。
在这里插入图片描述
在这里插入图片描述
点击确定,即可完成第一次配置。
而cmake的第一次配置给我的感觉就是在检查VTK8.0.0中的头文件和库文件,检查各个头文件和库文件的关系以及这些文件的版本信息等等,这也就是我个人的推测,因为我看到输出界面有许多检查信息。
4、第一次配置完成后,我们就要进行第二次配置,如下所示:
在这里插入图片描述
图中的BUILD_EXAMPLES、BUILD_TESTING我们可以加,也可以不加,不过我建议还是不要加上BUILD_EXAMPLES、BUILD_TESTING,因为要是加上了就会造成要编译的项目文件很大。
在这里插入图片描述
在这里插入图片描述
如果你还想要生成更多的文件,你还可以选择其他选项。除此之外,就是有时候可能没有找到自己想生成的文件,那你可以点击上面的“Advance(高级)”和“Group(组)”选项,再找一下可能会有你说需要的东西。
在这里插入图片描述
5、配置好了之后就可以点击“Configure”即可。
在这中间可能会出现下面的情况,如图所示:
在这里插入图片描述
你只需要这样配置一下就可以了,如下:
在这里插入图片描述
6、再次点击“Configure”,对照下面的信息是否相同。
在这里插入图片描述
7、如果相同的话,那就点击“Generate”生成VS项目文件。
在这里插入图片描述
8、点击“Open Project”,会调到VS2015软件中。在保证是编译器是64位的情况下,直接编译Release版本的文件。
或者以管理员命令启动VS2015,然后VS2015中打开vtk_bin8.0文件夹下的VTK.sln
在这里插入图片描述
打开工程后,选择Release和x64,默认启动项为ALL_BUILD,鼠标右键直接选择生成即可。
在这里插入图片描述
等了一段时间,然后就成功了,如果有失败,必须删除vtk_bin文件夹下所有文件,重头再来。
选INSTALL,右键点生成,很快就生成了
在这里插入图片描述

编译结果如下图:
在这里插入图片描述
到这里,我们的VTK文件已经全部生成完毕。

五、VTK文件重新配置

其实很简单,就是将C:\PCL\PCL1.8.1\3rdParty\VTK替换为我们编译生成的VTK文件(为了方便称呼,我就将前者叫做旧版VTK,后者叫做新版VTK),我是将旧版VTK文件夹改名为VTK8.0,然后将新版VTK文件整个都复制过去就行了。
在这里插入图片描述
不过我们还要注意的就是,新版VTK文件中没有Debug版的.lib文件,我想这应该是我们在“INSTALL”生成的时候只能生成Release版本的.lib文件。
新版VTK库文件:
在这里插入图片描述
旧版本VTK库文件:
在这里插入图片描述
所以我们没有办法在Debug模式下运行程序,所以就只能在Release模式下运行,不过这已经够用了。

六、为Qt Designer安装QVTKWidget插件:

将下图所示的三个东西,复制到E:\Qt5.9.4\5.9.4\msvc2015_64\plugins\designer\目录。
在这里插入图片描述
在这里插入图片描述
启动Qt Designer,这里有两个版本,一般上面是32位,下面是64位。根据编译的版本选择。
在这里插入图片描述
在这里插入图片描述
项目测试
百度网盘:https://pan.baidu.com/s/1zCTIWmD5CYAlBrG1q6j9nQ
提取码:kdi8
如果没有点云文件,提供一个点云文件:链接:https://pan.baidu.com/s/1iSMApxzvOv9tLfMVizEmaA 提取码:zfpk
(记得更改一下程序中你的PCD点云文件的路径)点击运行程序。

碰到的错误:
1、Qt error: LNK1158 无法运行rc.exe解决办法

找出电脑上的rc.exe ,发现在:C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64 路径下。
打开creator的Path环境设置,打开这个设置发现有他指向的路径:C:\Program Files (x86)\Windows Kits\10\bin\x64,
但中间差一个版本号。所以找不到这个文件。
qt会打开 E:\Qt\5.9.4\msvc2015_64\bin,
处理方法:
将32位版本 rc.exe rcdll.dll 拷贝到E:\Qt\5.9.4\msvc2015_64\bin(如果选择安装2015 的32位编译器)
将64位版本rc.exe rcdll.dll 拷贝到E:\Qt\5.9.4\msvc2015_64\bin (如果选择安装2015 的64位编译器)
对于vs2017 环境也这么做。
对于其他版本如法炮制。

2、VS2015在Release模式下运行Qt GUI Application程序报错
头文件加上这样三句代码:
#include “vtkAutoInit.h”
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkInteractionStyle);

最后:
希望大家能配置成功,有什么疑问就可以留言。

参考博客

1、QT配置PCL过程记录
2、PCL+VS+Qt+Win10 的综合配置精华
3、Qt 5.10.1 + PCL 1.8.1 环境搭建
4、QT+PCL配置过程(详细)
5、QT + PCL 项目工程(.pro文件)配置
6、工程环境配置 使用QT+PCL点云可视化 QT5.7.1 + VTK8.2.0 + PCL1.11.0 + VS2019 + OpenCV4.3.0 +Cmake3.18.0

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

whb1815

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值