热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PCL1.8.0+VS2013+Win10配置

文章目录说明PCL1.8.0VS2013Win10配置第一步:PCL的安装第二步:环境变量的配置第三步:新建一个x64的控制台项目第四步&

文章目录

    • 说明
    • PCL1.8.0+VS2013+Win10 配置
      • 第一步:PCL 的安装
      • 第二步:环境变量的配置
      • 第三步:新建一个 x64 的控制台项目
      • 第四步:包含目录、库目录、附加依赖项的配置
      • 第五步:项目环境目录配置
      • 第六步:测试是否配置成功
      • 第七步:导出配置
    • 常见问题汇总
    • 参考博客


说明




  • 欢迎进群探讨 PCL 的更多问题

QQ群号:190162198
QQ群名:PCL点云部落

在这里插入图片描述

PCL1.8.0+VS2013+Win10 配置



配置环境前需要准备的工具有:

  • PCL-1.8.0-AllInOne-msvc2013-win32 或者 PCL-1.8.0-AllInOne-msvc2013-win64
  • VS2013
  • Qt(可选)

注:本文是在 64 位操作系统下进行安装操作的!包括PCL的安装也是 64 位的!


注:以上软件均可在QQ群获取

下载完成后开始安装吧~~~

第一步:PCL 的安装



注意事项:

  • 安装位置 默认安装在C盘,修改位置到其他盘符,作者使用 D:\PCL1.8\ 进行安装
  • 中途弹出安装OpenNI的安装选项 安装到 D:\PCL1.8\PCL 1.8.0\3rdParty\OpenNI2 目录下
  • 直到安装完成 …

第二步:环境变量的配置



首先打开环境变量设置界面:此电脑->右键属性->高级系统变量->环境变量->系统变量:

这里写图片描述

该3项是在安装完成后自动生成的,同理:

这里写图片描述

该项也是自动生成的。我们需要做的是:选中系统变量中的Path,选择编辑,然后添加以下5条:

这里写图片描述

在这里直接给出,防止出现错误(依次添加):

%PCL_ROOT%\3rdParty\FLANN\bin
%PCL_ROOT%\3rdParty\VTK\bin
%OPENNI2_REDIST64%
%OPENNI2_LIB64%
%OPENNI2_INCLUDE64%

到此,环境变量的配置完成。

第三步:新建一个 x64 的控制台项目



首先,新建一个空项目:打开VS2013->文件>新建>项目

这里写图片描述

新建一个空 Win 32 项目:注意是Win 32 控制台项目

这里写图片描述

将项目属性切换为 64 位:项目右键->属性->配置管理器->下拉菜单选择新建

这里写图片描述

然后选择 x64 ,单击确定后,在配置管理器界面点击确定,退出配置管理器。

这里写图片描述

至此,完成 64 位平台的更改。

第四步:包含目录、库目录、附加依赖项的配置



首先,打开属性管理器:视图->*其他窗口->属性管理器

这里写图片描述

然后选择 Debug | x64 :右键->添加新项目属性表,命名为 PCL ,最终结果如黄色椭圆形所示。

这里写图片描述

包含目录的编辑:选择新建的PCL->右键属性->通用属性->VC++目录->包含目录,添加如下:

这里写图片描述

还是,为了方便,将包含目录添加项贴出:

D:\PCL1.8\PCL 1.8.0\include\pcl-1.8
D:\PCL1.8\PCL 1.8.0\3rdParty\Boost\include\boost-1_59
D:\PCL1.8\PCL 1.8.0\3rdParty\Qhull\include
D:\PCL1.8\PCL 1.8.0\3rdParty\FLANN\include
D:\PCL1.8\PCL 1.8.0\3rdParty\VTK\include\vtk-7.0
D:\PCL1.8\PCL 1.8.0\3rdParty\Eigen\eigen3

库目录的编辑:选择新建的PCL->右键属性->通用属性->VC++目录->库目录,添加如下:

这里写图片描述

库目录的添加项贴出:

D:\PCL1.8\PCL 1.8.0\3rdParty\VTK\lib
D:\PCL1.8\PCL 1.8.0\3rdParty\FLANN\lib
D:\PCL1.8\PCL 1.8.0\3rdParty\Qhull\lib
D:\PCL1.8\PCL 1.8.0\3rdParty\Boost\lib
D:\PCL1.8\PCL 1.8.0\lib

附加依赖项的编辑:选择新建的PCL->右键属性->通用属性->链接器->输入->附加依赖项,添加如下:

这里写图片描述

附加依赖项的添加项贴出(略多):

pcl_apps_debug.lib
pcl_common_debug.lib
pcl_features_debug.lib
pcl_filters_debug.lib
pcl_io_ply_debug.lib
pcl_io_debug.lib
pcl_kdtree_debug.lib
pcl_keypoints_debug.lib
pcl_ml_debug.lib
pcl_octree_debug.lib
pcl_outofcore_debug.lib
pcl_people_debug.lib
pcl_recognition_debug.lib
pcl_registration_debug.lib
pcl_sample_consensus_debug.lib
pcl_search_debug.lib
pcl_segmentation_debug.lib
pcl_simulation_debug.lib
pcl_stereo_debug.lib
pcl_surface_debug.lib
pcl_tracking_debug.lib
pcl_visualization_debug.lib
libboost_atomic-vc120-mt-gd-1_59.lib
libboost_chrono-vc120-mt-gd-1_59.lib
libboost_container-vc120-mt-gd-1_59.lib
libboost_context-vc120-mt-gd-1_59.lib
libboost_coroutine-vc120-mt-gd-1_59.lib
libboost_date_time-vc120-mt-gd-1_59.lib
libboost_exception-vc120-mt-gd-1_59.lib
libboost_filesystem-vc120-mt-gd-1_59.lib
libboost_graph-vc120-mt-gd-1_59.lib
libboost_iostreams-vc120-mt-gd-1_59.lib
libboost_locale-vc120-mt-gd-1_59.lib
libboost_log-vc120-mt-gd-1_59.lib
libboost_log_setup-vc120-mt-gd-1_59.lib
libboost_math_c99-vc120-mt-gd-1_59.lib
libboost_math_c99f-vc120-mt-gd-1_59.lib
libboost_math_c99l-vc120-mt-gd-1_59.lib
libboost_math_tr1-vc120-mt-gd-1_59.lib
libboost_math_tr1f-vc120-mt-gd-1_59.lib
libboost_math_tr1l-vc120-mt-gd-1_59.lib
libboost_mpi-vc120-mt-gd-1_59.lib
libboost_prg_exec_monitor-vc120-mt-gd-1_59.lib
libboost_program_options-vc120-mt-gd-1_59.lib
libboost_random-vc120-mt-gd-1_59.lib
libboost_regex-vc120-mt-gd-1_59.lib
libboost_serialization-vc120-mt-gd-1_59.lib
libboost_signals-vc120-mt-gd-1_59.lib
libboost_system-vc120-mt-gd-1_59.lib
libboost_test_exec_monitor-vc120-mt-gd-1_59.lib
libboost_thread-vc120-mt-gd-1_59.lib
libboost_timer-vc120-mt-gd-1_59.lib
libboost_unit_test_framework-vc120-mt-gd-1_59.lib
libboost_wave-vc120-mt-gd-1_59.lib
libboost_wserialization-vc120-mt-gd-1_59.lib
flann-gd.lib
flann_cpp_s-gd.lib
flann_s-gd.lib
qhull-gd.lib
qhullcpp-gd.lib
qhullstatic-gd.lib
qhullstatic_r-gd.lib
qhull_p-gd.lib
qhull_r-gd.lib
vtkalglib-7.0-gd.lib
vtkChartsCore-7.0-gd.lib
vtkCommonColor-7.0-gd.lib
vtkCommonComputationalGeometry-7.0-gd.lib
vtkCommonCore-7.0-gd.lib
vtkCommonDataModel-7.0-gd.lib
vtkCommonExecutionModel-7.0-gd.lib
vtkCommonMath-7.0-gd.lib
vtkCommonMisc-7.0-gd.lib
vtkCommonSystem-7.0-gd.lib
vtkCommonTransforms-7.0-gd.lib
vtkDICOMParser-7.0-gd.lib
vtkDomainsChemistry-7.0-gd.lib
vtkDomainsChemistryOpenGL2-7.0-gd.lib
vtkexoIIc-7.0-gd.lib
vtkexpat-7.0-gd.lib
vtkFiltersAMR-7.0-gd.lib
vtkFiltersCore-7.0-gd.lib
vtkFiltersExtraction-7.0-gd.lib
vtkFiltersFlowPaths-7.0-gd.lib
vtkFiltersGeneral-7.0-gd.lib
vtkFiltersGeneric-7.0-gd.lib
vtkFiltersGeometry-7.0-gd.lib
vtkFiltersHybrid-7.0-gd.lib
vtkFiltersHyperTree-7.0-gd.lib
vtkFiltersImaging-7.0-gd.lib
vtkFiltersModeling-7.0-gd.lib
vtkFiltersParallel-7.0-gd.lib
vtkFiltersParallelImaging-7.0-gd.lib
vtkFiltersProgrammable-7.0-gd.lib
vtkFiltersSelection-7.0-gd.lib
vtkFiltersSMP-7.0-gd.lib
vtkFiltersSources-7.0-gd.lib
vtkFiltersStatistics-7.0-gd.lib
vtkFiltersTexture-7.0-gd.lib
vtkFiltersVerdict-7.0-gd.lib
vtkfreetype-7.0-gd.lib
vtkGeovisCore-7.0-gd.lib
vtkglew-7.0-gd.lib
vtkGUISupportQt-7.0-gd.lib
vtkGUISupportQtSQL-7.0-gd.lib
vtkhdf5-7.0-gd.lib
vtkhdf5_hl-7.0-gd.lib
vtkImagingColor-7.0-gd.lib
vtkImagingCore-7.0-gd.lib
vtkImagingFourier-7.0-gd.lib
vtkImagingGeneral-7.0-gd.lib
vtkImagingHybrid-7.0-gd.lib
vtkImagingMath-7.0-gd.lib
vtkImagingMorphological-7.0-gd.lib
vtkImagingSources-7.0-gd.lib
vtkImagingStatistics-7.0-gd.lib
vtkImagingStencil-7.0-gd.lib
vtkInfovisCore-7.0-gd.lib
vtkInfovisLayout-7.0-gd.lib
vtkInteractionImage-7.0-gd.lib
vtkInteractionStyle-7.0-gd.lib
vtkInteractionWidgets-7.0-gd.lib
vtkIOAMR-7.0-gd.lib
vtkIOCore-7.0-gd.lib
vtkIOEnSight-7.0-gd.lib
vtkIOExodus-7.0-gd.lib
vtkIOExport-7.0-gd.lib
vtkIOGeometry-7.0-gd.lib
vtkIOImage-7.0-gd.lib
vtkIOImport-7.0-gd.lib
vtkIOInfovis-7.0-gd.lib
vtkIOLegacy-7.0-gd.lib
vtkIOLSDyna-7.0-gd.lib
vtkIOMINC-7.0-gd.lib
vtkIOMovie-7.0-gd.lib
vtkIONetCDF-7.0-gd.lib
vtkIOParallel-7.0-gd.lib
vtkIOParallelXML-7.0-gd.lib
vtkIOPLY-7.0-gd.lib
vtkIOSQL-7.0-gd.lib
vtkIOVideo-7.0-gd.lib
vtkIOXML-7.0-gd.lib
vtkIOXMLParser-7.0-gd.lib
vtkjpeg-7.0-gd.lib
vtkjsoncpp-7.0-gd.lib
vtklibxml2-7.0-gd.lib
vtkmetaio-7.0-gd.lib
vtkNetCDF-7.0-gd.lib
vtkNetCDF_cxx-7.0-gd.lib
vtkoggtheora-7.0-gd.lib
vtkParallelCore-7.0-gd.lib
vtkpng-7.0-gd.lib
vtkproj4-7.0-gd.lib
vtkRenderingAnnotation-7.0-gd.lib
vtkRenderingContext2D-7.0-gd.lib
vtkRenderingContextOpenGL2-7.0-gd.lib
vtkRenderingCore-7.0-gd.lib
vtkRenderingFreeType-7.0-gd.lib
vtkRenderingImage-7.0-gd.lib
vtkRenderingLabel-7.0-gd.lib
vtkRenderingLOD-7.0-gd.lib
vtkRenderingOpenGL2-7.0-gd.lib
vtkRenderingQt-7.0-gd.lib
vtkRenderingVolume-7.0-gd.lib
vtkRenderingVolumeOpenGL2-7.0-gd.lib
vtksqlite-7.0-gd.lib
vtksys-7.0-gd.lib
vtktiff-7.0-gd.lib
vtkverdict-7.0-gd.lib
vtkViewsContext2D-7.0-gd.lib
vtkViewsCore-7.0-gd.lib
vtkViewsInfovis-7.0-gd.lib
vtkViewsQt-7.0-gd.lib
vtkzlib-7.0-gd.lib


注:以上附加依赖项只针对 PCL1.8.0 !

这里写图片描述

第五步:项目环境目录配置



项目->右键->属性->配置属性->调试->环境:

贴出环境目录配置:

PATH=$(PCL_ROOT)\bin;$(PCL_ROOT)\3rdParty\FLANN\bin;$(PCL_ROOT)\3rdParty\VTK\bin;$(PCL_ROOT)\Qhull\bin;$(PCL_ROOT)\3rdParty\OpenNI2\Tools;$(PATH)

第六步:测试是否配置成功



新建一个 main.cpp ,输入以下代码:

#include
#include
#include
#include int user_data;void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{viewer.setBackgroundColor(1.0, 0.5, 1.0);pcl::PointXYZ o;o.x &#61; 1.0;o.y &#61; 0;o.z &#61; 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 &#61; 0;std::stringstream ss;ss << "Once per viewer loop: " << count&#43;&#43;;viewer.removeShape("text", 0);viewer.addText(ss.str(), 200, 300, "text", 0);//FIXME: possible race condition here:user_data&#43;&#43;;
}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 renderedviewer.showCloud(cloud);//use the following functions to get access to the underlying more advanced/powerful//PCLVisualizer//This will only get called onceviewer.runOnVisualizationThreadOnce(viewerOneOff);//This will get called once per visualization iterationviewer.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&#43;&#43;;}return 0;
}

Ctrl &#43; F5 进行调试&#xff0c;若出现如下界面&#xff0c;则表示配置成功&#xff0c;其中&#xff1a;通过鼠标移动可以调整圆球方位&#xff0c;滚轮可以进行放大缩小操作

这里写图片描述

第七步&#xff1a;导出配置



如果测试成功&#xff0c;那么就恭喜了~~~然后将我们配置的 PCL.props 上右键&#xff0c;保存PCL&#xff0c;将其导出到本地&#xff0c;以后在做相关工程时&#xff0c;直接在 Debug | x64 下将 PCL.props 添加进来即可。

至此&#xff0c;配置完成~~~

个人心得体会&#xff1a;PCL 程序还是很耗CPU的&#xff0c;博主用的 Intel i7-7700 CPU&#xff0c;8G 内存&#xff0c;运行该程序时&#xff0c;CPU 占到40%&#xff0c;CPU 温度 50℃&#xff0c;内存55%&#xff0c;清大家注意&#xff0c;配置一款强悍的独立显卡还是必要的&#xff01;


常见问题汇总




问题&#xff11;&#xff1a;VS 安装失败&#xff1f;
方案一&#xff1a;之前是否安装过其他VS版本&#xff1f;如果是&#xff0c;清先卸载其他版本&#xff0c;重新安装
方案二&#xff1a;其他未知原因&#xff1f;清重装系统&#xff08;哈哈&#xff09;
问题&#xff12;&#xff1a;PCL 安装失败&#xff1f;
方案&#xff1a;这个就很尴尬了&#xff0c;解决方法&#xff1a;未知。。。
问题&#xff13;&#xff1a;提示缺少 pcl_common_debug.dll、pcl_io_debug.dll、pcl_visualization_debug.dll、vtkCommonCore-7.0-gd.dll&#xff1f;
方案一&#xff1a;重启VS
方案二&#xff1a;重启电脑
问题4&#xff1a;其他


参考博客




  1. Summit_Yue&#xff1a;Windows10下VS2013&#43;PCL1.8环境配置

  2. lvei_jenny&#xff1a;vs &#43;pcl 配置问题

  3. cc_sunny&#xff1a;关于PCL的那些事——环境搭配(PCL1.8 64bitWIN8.1 VS2013)

  4. ideallic&#xff1a;PCL1.8.0&#43;VS2013配置教程


推荐阅读
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了一个程序,可以输出1000内能被3整除且个位数为6的所有整数。程序使用了循环和条件判断语句来筛选符合条件的整数,并将其输出。 ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 摘要: 在测试数据中,生成中文姓名是一个常见的需求。本文介绍了使用C#编写的随机生成中文姓名的方法,并分享了相关代码。作者欢迎读者提出意见和建议。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
author-avatar
王聪明2011
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有