PCL系列文章——第一篇,PCL+VTK在windows下的安装

PCL是点云处理一个非常强大的库,可以完成多种点云的操作算法;而VTK又是三维点云显示以及三维重建非常有用的库。虽然只会调库难免让人绝对低端,但这些库的功能也是真的强大。

PCL系列文章

第一篇,PCL+VTK在windows下的安装

第二篇,PCL的使用

如果需要PCL+VTK的安装文件,咸鱼链接:

如果需要三维点云配准的qt程序,咸鱼链接


目录

第一、版本要求

第二、安装PCL

第二、替换VTK8.0.0

第三、qt中pro文件的编写以及解决运行崩溃问题

第四、解决程序运行崩溃问题

第一、版本要求

我的qt版本是:

qt5.12.0,使用msvc2015(安装的时候可以选择安装msvc各个版本,不需要安装vs2015等),64位系统(这里写的32bit不知道什么意思)

我的pcl版本是pcl1.8.1,vtk版本是vtk8.0.0(注意pcl和vtk版本必须要对应,不对应会有各种问题)

第二、安装PCL

使用的是一个安装包,pcl依赖很多的其他库,所以推荐的方式是通过一键安装包安装。

包的名称如下:PCL-1.8.1-AllInOne-msvc2015-win64.exe

安装的时候按照提示一步步进行就行,最好所有的文件放到一个文件夹下,就如下图一样。

安装完成,确保系统的环境变量中的PATH有如下几个路径:

第二、替换VTK8.0.0

由于某种原因,pcl自带的vtk并不能使用。我的pcl当前版本是pcl1.8.1,对应的vtk为vtk8.0.0。

将编译好的文件,替换pcl自带的vtk目录。

第三、qt中pro文件的编写以及解决运行崩溃问题

这里附上我的pro文件。由于我把pcl和opencv都复制了一份放到工程目录了,所以会如下所示,可以按照自己的目录进行更改。

#-------------------------------------------------
#
# Project created by QtCreator 2019-12-01T22:16:14
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = pcltest
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

CONFIG += c++11

SOURCES += \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        mainwindow.h

FORMS += \
        mainwindow.ui

INCLUDEPATH += E:/pcl1.8.1/PCL1.8.1/include/pcl-1.8\
INCLUDEPATH += E:/pcl1.8.1/PCL1.8.1/include/pcl-1.8/pcl\
INCLUDEPATH += E:/pcl1.8.1/PCL1.8.1/3rdParty/Boost/include/boost-1_64\
INCLUDEPATH += E:/pcl1.8.1/PCL1.8.1/3rdParty/Eigen/eigen3\
INCLUDEPATH += E:/pcl1.8.1/PCL1.8.1/3rdParty/FLANN/include\
INCLUDEPATH += E:/pcl1.8.1/PCL1.8.1/3rdParty/FLANN/include/flann\
INCLUDEPATH += E:/pcl1.8.1/PCL1.8.1/3rdParty/OpenNI2/Include\
INCLUDEPATH += E:/pcl1.8.1/PCL1.8.1/3rdParty/Qhull/include\
INCLUDEPATH += E:/pcl1.8.1/PCL1.8.1/3rdParty/VTK/include/vtk-8.0\

CONFIG(debug,debug|release){
LIBS += -LE:/pcl1.8.1/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 += -LE:/pcl1.8.1/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 += -LE:/pcl1.8.1/PCL1.8.1/3rdParty/FLANN/lib\
-lflann-gd\
-lflann_cpp-gd\
-lflann_cpp_s-gd\
-lflann_s-gd

LIBS += -LE:/pcl1.8.1/PCL1.8.1/3rdParty/OpenNI2/Lib\
        -lOpenNI2

LIBS += -LE:/pcl1.8.1/PCL1.8.1/3rdParty/Qhull/lib\
-lqhullcpp_d\
-lqhullstatic_d\
-lqhullstatic_r_d\
-lqhull_d\
-lqhull_p_d\
-lqhull_r_d\

LIBS += -LE:/pcl1.8.1/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 += -LE:/pcl1.8.1/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 += -LE:/pcl1.8.1/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 += -LE:/pcl1.8.1/PCL1.8.1/3rdParty/FLANN/lib\
        -lflann\
        -lflann_cpp_s\
        -lflann_s

LIBS += -LE:/pcl1.8.1/PCL1.8.1/3rdParty/OpenNI2/Lib\
        -lOpenNI2

LIBS += -LE:/pcl1.8.1/PCL1.8.1/3rdParty/Qhull/lib\
        -lqhull\
        -lqhullcpp\
        -lqhullstatic\
        -lqhullstatic_r\
        -lqhull_p\
        -lqhull_r

LIBS += -LE:/pcl1.8.1/PCL1.8.1/3rdParty/VTK/lib\
}


INCLUDEPATH += $$PWD/opencv-4.1.0/include\
               $$PWD/opencv-4.1.0/include/opencv2

LIBS += -L$$PWD\opencv-4.1.0\x64\vc16\lib\
-lopencv_world410d\
-lopencv_img_hash410d

# -lopencv_aruco320d\
#                                                            -lopencv_bgsegm320d\
#                                                            -lopencv_bioinspired320d\
#                                                            -lopencv_calib3d320d\
#                                                            -lopencv_ccalib320d\
#                                                            -lopencv_core320d\
#                                                            -lopencv_datasets320d\
#                                                            -lopencv_dnn320d\
#                                                            -lopencv_dpm320d\
#                                                            -lopencv_face320d\
#                                                            -lopencv_features2d320d\
#                                                            -lopencv_flann320d\
#                                                            -lopencv_fuzzy320d\
#                                                            -lopencv_highgui320d\
#                                                            -lopencv_imgcodecs320d\
#                                                            -lopencv_imgproc320d\
#                                                            -lopencv_line_descriptor320d\
#                                                            -lopencv_ml320d\
#                                                            -lopencv_objdetect320d\
#                                                            -lopencv_optflow320d\
#                                                            -lopencv_phase_unwrapping320d\
#                                                            -lopencv_photo320d\
#                                                            -lopencv_plot320d\
#                                                            -lopencv_reg320d\
#                                                            -lopencv_rgbd320d\
#                                                            -lopencv_saliency320d\
#                                                            -lopencv_shape320d\
#                                                            -lopencv_stereo320d\
#                                                            -lopencv_stitching320d\
#                                                            -lopencv_structured_light320d\
#                                                            -lopencv_superres320d\
#                                                            -lopencv_videoio320d\
#                                                            -lopencv_xfeatures2d320d\
#                                                            -lkernel32\
#                                                            -luser32\
#                                                            -lgdi32\
#                                                            -lwinspool\
#                                                            -lcomdlg32\
#                                                            -ladvapi32\
#                                                            -lshell32\
#                                                            -lole32\
#                                                            -loleaut32\
#                                                            -luuid\
#                                                            -lodbc32\
#                                                            -lodbccp32

# Default rules for deployment.
win32-msvc*:QMAKE_CXXFLAGS += /wd"4819"
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

第四、解决程序运行崩溃问题

当我们配置完成后,如果编译不报错,但是一运行就崩溃。原因可能是dll文件没有添加。

首先,确认系统环境变量的PATH是否添加前面图的路径;

第二,将所有dll文件(pcl,vtk,eigen,FLANN,OpenNI2,Qhull)等放到C:\Windows\System32下。

发布了70 篇原创文章 · 获赞 48 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/kissgoodbye2012/article/details/103644297