我的配置版本和环境: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