PCL1.8.0+QT(MSVC2013)

工具:
PCL1.8.0
Visual Studio 2013(Uitimate)
QT5.9.1(MSVC2013)
CBD debugger(win10SDK)官网下载
若需要在VS中使用QT显示界面还需下载qt-vsaddin-msvc2013-2.2.0.vsix官网下载
环境:
win7旗舰版,64位系统

一、安装工具

VS2013根据提示安装即可,PCL相应安装在另一篇博客中。
建议安装顺序VS、Qt、qt-vsaddin。

1、QT安装:

首先打开安装包,可跳过Qt账户登录

在这里插入图片描述

然后选择QT组件。

编译器选择了MinGW构件和msvc2013 64-bit构件。
在这里插入图片描述
Tools下建议选择MinGW+CDB Debugger。
在这里插入图片描述
“Qt 5.9.1”节点下面是 Qt 的功能模块,包括用于不同编译器和平台的模块,这些模块包括内容如下:

① MinGW 5.3.0 32 bit 编译器模块。MinGW 是 Minimalist GNU for Windows 的缩写,MinGW是 Windows 平台上使用的 GNU 工具集导入库的集合。

② 用于 UWP 编译的模块。UWP 是 Windows 10 中 Universal Windows Platform 的简称,有不同编译器类型的 UWP。

③ 用于 windows 平台上的 MSVC 编译器模块,如 msvc2015 32-bit 和 msvc2015 64-bit 等。要安装 MSVC 编译器的模块,需要计算机上已经安装相应版本的 Visual Studio。

④ 用于 Android 平台的模块,如 Android x86 和 Android ARMv7。

⑤ Sources 模块是 Qt 的源程序。

⑥ Qt Charts 是二维图表模块,用于绘制柱状图、饼图、曲线图等常用二维图表。

⑦ Qt Data Visualization 是三维数据图表模块,用于数据的三维显示,如散点的三维空间分布、三维曲面等。

⑧ Qt Purchasing、Qt WebEngine、Qt Network Auth(TP)等其他模块,括号里的 TP 表示技术预览(Technology Preview)。

⑨ Qt Scritp(Deprecated)是脚本模块,括号里的“Deprecated”表示这是已经过时的模块。
后带有TP的为预展示模块,一般不选择。

“Tools”节点下面是一些工具软件,包括内容如下:
① Qt Creator 4.3.1 是用于 Qt 程序开发的 IDE,强制安装。
② 用于和 CDB 调试工具对接,默认安装,一般用于调试 VC 编译的 Qt 程序。
③ MinGW 5.3.0 是 MinGW 编译工具链。
④ Strawberry Perl 是一个 Perl 语言工具,一般不选择。
最后根据导向一步步操作,完成QT安装。

2、安装CBD(Win10SDK)

由于Qt没有配有msvc的调试器,需要下载Win10SKD。
解压缩镜像文件后,在文件夹内打开winsdksetup.exe,只勾选 Debugging tools for Windows 安装即可。因为只用WIN10SDK中的debugger,所以可以在win7上面使用。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

二、QT配置PCL

1、构建msvc套件

首先在工具中打开选项
在这里插入图片描述
接着添加新安装的调试器
在这里插入图片描述
选择安装好的debug tools for windows文件夹下的cbd.exe,并更改调试器名称。
在这里插入图片描述
在构建套件的Desktop Qt5.9.1msv2013中选择刚添加的调试器,完成MSVC2013套件构建。
在这里插入图片描述

2、连接PCL库

在 .pro 文件中添加如下配置

INCLUDEPATH += D:/PCL-1.8/PCL1.8.0/include/pcl-1.8\
INCLUDEPATH += D:/PCL-1.8/PCL1.8.0/include/pcl-1.8/pcl\
INCLUDEPATH += D:/PCL-1.8/PCL1.8.0/3rdParty/Boost/include/boost-1_59\
INCLUDEPATH += D:/PCL-1.8/PCL1.8.0/3rdParty/Eigen/eigen3\
INCLUDEPATH += D:/PCL-1.8/PCL1.8.0/3rdParty/FLANN/include\
INCLUDEPATH += D:/PCL-1.8/PCL1.8.0/3rdParty/FLANN/include/flann\
INCLUDEPATH += D:/PCL-1.8/PCL1.8.0/3rdParty/OpenNI2/Include\
INCLUDEPATH += D:/PCL-1.8/PCL1.8.0/3rdParty/Qhull/include\
INCLUDEPATH += D:/PCL-1.8/PCL1.8.0/3rdParty/VTK/include/vtk-7.0\


CONFIG(debug,debug|release){
LIBS += -LD:/PCL-1.8/PCL1.8.0/lib\
        -lpcl_apps_debug\
        -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_simulation_debug\
        -lpcl_stereo_debug\
        -lpcl_surface_debug\
        -lpcl_tracking_debug\
        -lpcl_visualization_debug\

LIBS += -LD:/PCL-1.8/PCL1.8.0/3rdParty/Boost/lib\
        -llibboost_atomic-vc120-mt-gd-1_59\
        -llibboost_chrono-vc120-mt-gd-1_59\
        -llibboost_container-vc120-mt-gd-1_59\
        -llibboost_context-vc120-mt-gd-1_59\
        -llibboost_coroutine-vc120-mt-gd-1_59\
        -llibboost_date_time-vc120-mt-gd-1_59\
        -llibboost_exception-vc120-mt-gd-1_59\
        -llibboost_filesystem-vc120-mt-gd-1_59\
        -llibboost_graph-vc120-mt-gd-1_59\
        -llibboost_iostreams-vc120-mt-gd-1_59\
        -llibboost_locale-vc120-mt-gd-1_59\
        -llibboost_log-vc120-mt-gd-1_59\
        -llibboost_log_setup-vc120-mt-gd-1_59\
        -llibboost_math_c99-vc120-mt-gd-1_59\
        -llibboost_math_c99f-vc120-mt-gd-1_59\
        -llibboost_math_c99l-vc120-mt-gd-1_59\
        -llibboost_math_tr1-vc120-mt-gd-1_59\
        -llibboost_math_tr1f-vc120-mt-gd-1_59\
        -llibboost_math_tr1l-vc120-mt-gd-1_59\
        -llibboost_mpi-vc120-mt-gd-1_59\
        -llibboost_prg_exec_monitor-vc120-mt-gd-1_59\
        -llibboost_program_options-vc120-mt-gd-1_59\
        -llibboost_random-vc120-mt-gd-1_59\
        -llibboost_regex-vc120-mt-gd-1_59\
        -llibboost_serialization-vc120-mt-gd-1_59\
        -llibboost_signals-vc120-mt-gd-1_59\
        -llibboost_system-vc120-mt-gd-1_59\
        -llibboost_test_exec_monitor-vc120-mt-gd-1_59\
        -llibboost_thread-vc120-mt-gd-1_59\
        -llibboost_timer-vc120-mt-gd-1_59\
        -llibboost_unit_test_framework-vc120-mt-gd-1_59\
        -llibboost_wave-vc120-mt-gd-1_59\
        -llibboost_wserialization-vc120-mt-gd-1_59

LIBS += -LD:/PCL-1.8/PCL1.8.0/3rdParty/FLANN/lib\
        -lflann-gd\
        -lflann_cpp_s-gd\
        -lflann_s-gd

LIBS += -LD:/PCL-1.8/PCL1.8.0/3rdParty/OpenNI2/Lib\
        -lOpenNI2

LIBS += -LD:/PCL-1.8/PCL1.8.0/3rdParty/Qhull/lib\
        -lqhull-gd\
        -lqhullcpp-gd\
        -lqhullstatic-gd\
        -lqhullstatic_r-gd\
        -lqhull_p-gd\
        -lqhull_r-gd

LIBS += -LD:/PCL-1.8/PCL1.8.0\3rdParty\VTK\lib\
        -lvtkalglib-7.0-gd\
        -lvtkChartsCore-7.0-gd\
        -lvtkCommonColor-7.0-gd\
        -lvtkCommonComputationalGeometry-7.0-gd\
        -lvtkCommonCore-7.0-gd\
        -lvtkCommonDataModel-7.0-gd\
        -lvtkCommonExecutionModel-7.0-gd\
        -lvtkCommonMath-7.0-gd\
        -lvtkCommonMisc-7.0-gd\
        -lvtkCommonSystem-7.0-gd\
        -lvtkCommonTransforms-7.0-gd\
        -lvtkDICOMParser-7.0-gd\
        -lvtkDomainsChemistry-7.0-gd\
        -lvtkDomainsChemistryOpenGL2-7.0-gd\
        -lvtkexoIIc-7.0-gd\
        -lvtkexpat-7.0-gd\
        -lvtkFiltersAMR-7.0-gd\
        -lvtkFiltersCore-7.0-gd\
        -lvtkFiltersExtraction-7.0-gd\
        -lvtkFiltersFlowPaths-7.0-gd\
        -lvtkFiltersGeneral-7.0-gd\
        -lvtkFiltersGeneric-7.0-gd\
        -lvtkFiltersGeometry-7.0-gd\
        -lvtkFiltersHybrid-7.0-gd\
        -lvtkFiltersHyperTree-7.0-gd\
        -lvtkFiltersImaging-7.0-gd\
        -lvtkFiltersModeling-7.0-gd\
        -lvtkFiltersParallel-7.0-gd\
        -lvtkFiltersParallelImaging-7.0-gd\
        -lvtkFiltersProgrammable-7.0-gd\
        -lvtkFiltersSelection-7.0-gd\
        -lvtkFiltersSMP-7.0-gd\
        -lvtkFiltersSources-7.0-gd\
        -lvtkFiltersStatistics-7.0-gd\
        -lvtkFiltersTexture-7.0-gd\
        -lvtkFiltersVerdict-7.0-gd\
        -lvtkfreetype-7.0-gd\
        -lvtkGeovisCore-7.0-gd\
        -lvtkglew-7.0-gd\
        -lvtkGUISupportQt-7.0-gd\
        -lvtkGUISupportQtSQL-7.0-gd\
        -lvtkhdf5-7.0-gd\
        -lvtkhdf5_hl-7.0-gd\
        -lvtkImagingColor-7.0-gd\
        -lvtkImagingCore-7.0-gd\
        -lvtkImagingFourier-7.0-gd\
        -lvtkImagingGeneral-7.0-gd\
        -lvtkImagingHybrid-7.0-gd\
        -lvtkImagingMath-7.0-gd\
        -lvtkImagingMorphological-7.0-gd\
        -lvtkImagingSources-7.0-gd\
        -lvtkImagingStatistics-7.0-gd\
        -lvtkImagingStencil-7.0-gd\
        -lvtkInfovisCore-7.0-gd\
        -lvtkInfovisLayout-7.0-gd\
        -lvtkInteractionImage-7.0-gd\
        -lvtkInteractionStyle-7.0-gd\
        -lvtkInteractionWidgets-7.0-gd\
        -lvtkIOAMR-7.0-gd\
        -lvtkIOCore-7.0-gd\
        -lvtkIOEnSight-7.0-gd\
        -lvtkIOExodus-7.0-gd\
        -lvtkIOExport-7.0-gd\
        -lvtkIOGeometry-7.0-gd\
        -lvtkIOImage-7.0-gd\
        -lvtkIOImport-7.0-gd\
        -lvtkIOInfovis-7.0-gd\
        -lvtkIOLegacy-7.0-gd\
        -lvtkIOLSDyna-7.0-gd\
        -lvtkIOMINC-7.0-gd\
        -lvtkIOMovie-7.0-gd\
        -lvtkIONetCDF-7.0-gd\
        -lvtkIOParallel-7.0-gd\
        -lvtkIOParallelXML-7.0-gd\
        -lvtkIOPLY-7.0-gd\
        -lvtkIOSQL-7.0-gd\
        -lvtkIOVideo-7.0-gd\
        -lvtkIOXML-7.0-gd\
        -lvtkIOXMLParser-7.0-gd\
        -lvtkjpeg-7.0-gd\
        -lvtkjsoncpp-7.0-gd\
        -lvtklibxml2-7.0-gd\
        -lvtkmetaio-7.0-gd\
        -lvtkNetCDF-7.0-gd\
        -lvtkNetCDF_cxx-7.0-gd\
        -lvtkoggtheora-7.0-gd\
        -lvtkParallelCore-7.0-gd\
        -lvtkpng-7.0-gd\
        -lvtkproj4-7.0-gd\
        -lvtkRenderingAnnotation-7.0-gd\
        -lvtkRenderingContext2D-7.0-gd\
        -lvtkRenderingContextOpenGL2-7.0-gd\
        -lvtkRenderingCore-7.0-gd\
        -lvtkRenderingFreeType-7.0-gd\
        -lvtkRenderingImage-7.0-gd\
        -lvtkRenderingLabel-7.0-gd\
        -lvtkRenderingLOD-7.0-gd\
        -lvtkRenderingOpenGL2-7.0-gd\
        -lvtkRenderingQt-7.0-gd\
        -lvtkRenderingVolume-7.0-gd\
        -lvtkRenderingVolumeOpenGL2-7.0-gd\
        -lvtksqlite-7.0-gd\
        -lvtksys-7.0-gd\
        -lvtktiff-7.0-gd\
        -lvtkverdict-7.0-gd\
        -lvtkViewsContext2D-7.0-gd\
        -lvtkViewsCore-7.0-gd\
        -lvtkViewsInfovis-7.0-gd\
        -lvtkViewsQt-7.0-gd\
        -lvtkzlib-7.0-gd

} else {
LIBS += -LD:/PCL-1.8/PCL1.8.0/lib\
        -lpcl_apps_release\
        -lpcl_common_release\
        -lpcl_features_release\
        -lpcl_filters_release\
        -lpcl_io_release\
        -lpcl_io_ply_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_simulation_release\
        -lpcl_stereo_release\
        -lpcl_surface_release\
        -lpcl_tracking_release\
        -lpcl_visualization_release\

LIBS += -LD:/PCL-1.8/PCL1.8.0/3rdParty/Boost/lib\
        -llibboost_atomic-vc120-mt-1_59\
        -llibboost_chrono-vc120-mt-1_59\
        -llibboost_container-vc120-mt-1_59\
        -llibboost_context-vc120-mt-1_59\
        -llibboost_coroutine-vc120-mt-1_59\
        -llibboost_date_time-vc120-mt-1_59\
        -llibboost_exception-vc120-mt-1_59\
        -llibboost_filesystem-vc120-mt-1_59\
        -llibboost_graph-vc120-mt-1_59\
        -llibboost_iostreams-vc120-mt-1_59\
        -llibboost_locale-vc120-mt-1_59\
        -llibboost_log-vc120-mt-1_59\
        -llibboost_log_setup-vc120-mt-1_59\
        -llibboost_math_c99-vc120-mt-1_59\
        -llibboost_math_c99f-vc120-mt-1_59\
        -llibboost_math_c99l-vc120-mt-1_59\
        -llibboost_math_tr1-vc120-mt-1_59\
        -llibboost_math_tr1f-vc120-mt-1_59\
        -llibboost_math_tr1l-vc120-mt-1_59\
        -llibboost_mpi-vc120-mt-1_59\
        -llibboost_prg_exec_monitor-vc120-mt-1_59\
        -llibboost_program_options-vc120-mt-1_59\
        -llibboost_random-vc120-mt-1_59\
        -llibboost_regex-vc120-mt-1_59\
        -llibboost_serialization-vc120-mt-1_59\
        -llibboost_signals-vc120-mt-1_59\
        -llibboost_system-vc120-mt-1_59\
        -llibboost_test_exec_monitor-vc120-mt-1_59\
        -llibboost_thread-vc120-mt-1_59\
        -llibboost_timer-vc120-mt-1_59\
        -llibboost_unit_test_framework-vc120-mt-1_59\
        -llibboost_wave-vc120-mt-1_59\
        -llibboost_wserialization-vc120-mt-1_59

LIBS += -LD:/PCL-1.8/PCL1.8.0/3rdParty/FLANN/lib\
        -lflann\
        -lflann_cpp_s\
        -lflann_s

LIBS += -LD:/PCL-1.8/PCL1.8.0/3rdParty/OpenNI2/Lib\
        -lOpenNI2

LIBS += -LD:/PCL-1.8/PCL1.8.0/3rdParty/Qhull/lib\
        -lqhull\
        -lqhullcpp\
        -lqhullstatic\
        -lqhullstatic_r\
        -lqhull_p\
        -lqhull_r

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

完成配置

测试代码:

#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>

int user_data;

void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{
    viewer.setBackgroundColor(1.0, 0.5, 1.0);
    pcl::PointXYZ o;
    o.x = 1.0;
    o.y = 0;
    o.z = 0;
    viewer.addSphere(o, 0.25, "sphere", 0);
    std::cout << "i only run once" << std::endl;

}

void viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
{
    static unsigned count = 0;
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
    viewer.removeShape("text", 0);
    viewer.addText(ss.str(), 200, 300, "text", 0);

    //FIXME: possible race condition here:
    user_data++;
}

int main()
{
    pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>);
    pcl::io::loadPCDFile("my_point_cloud.pcd", *cloud);

    pcl::visualization::CloudViewer viewer("Cloud Viewer");



    //blocks until the cloud is actually rendered
    viewer.showCloud(cloud);

    //use the following functions to get access to the underlying more advanced/powerful
    //PCLVisualizer

    //This will only get called once
    viewer.runOnVisualizationThreadOnce(viewerOneOff);

    //This will get called once per visualization iteration
    viewer.runOnVisualizationThread(viewerPsycho);
    while (!viewer.wasStopped())
    {
        //you can also do cool processing here
        //FIXME: Note that this is running in a separate thread from viewerPsycho
        //and you should guard against race conditions yourself...
        user_data++;
    }
    return 0;
}

参考文章:
https://blog.csdn.net/qq_34719188/article/details/80601642
https://blog.csdn.net/knaha/article/details/103498141

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值