如何通过源码编译方式安装PCL

对于很多想学习PCL的同学而言,往往会被如何安装困扰很长时间。我就是这其中的一员,为了不让大家在安装问题上浪费太多时间,我决心写下这篇小小的随笔,希望对大家有所帮助。

  1. 下载需要的软件包

    • Visual Studio [我用的是VS2012,所以这里以这个版本作为基础进行介绍]
    • cmake-3.1.0(二进制安装包)
    • PCL-1.8.0(源码)
    • vtk-6.2.0(源码)
    • boost-1.58.0(源码)
    • eigen-3.2.5(源码)
    • flann-1.8.4(源码)
    • qhull-2012.1(源码)
    • openni2(OpenNI-Windows-x64-2.2.msi二进制安装包)

    请不要问我,这些软件从哪里下载。请到相应的官网去下载吧,利用google,很好找的。这里只是列出了必须安装的一些组件,如果你使用PCL进行开发涉及到了诸如cuda等组件,请自行下载,并参照后面的步骤进行安装。

  2. 软件的编译与安装

    在开始介绍如何安装之前,我先向大家介绍一下我在配置安装时的目录结构:

    在D:\pcl\目录下存放所有的源代码文件;在D:\programs\pcl_suites\下存放所有的编译好的项目文件和最终构建的类库文件[编译好的文件放在xxx-x.y.z文件夹(如flann-1.8.4)下;构建的类库文件放在xxx-install文件夹(如flann-install)下]

    • VS和cmake的安装

      无限下一步即可,VS2010、VS2012、VS2013均可,而cmake版本要大于2.8.6,此处不再赘述。

    • openni2的安装

      同样是无限下一步即可,请注意自定义安装目录

    • vtk、eigen、flann、qhull的编译

      使用cmake-gui,将源代码目录和编译结果的存放目录天道指定位置,运行Configure,将不必要的编译选项去除,如果没有错误的话,点击Generate即完成编译。

    • vtk、eigen、flann、qhull的安装

      双击x.sln解决方案文件,即可打开由cmake生成的VS工程文件,对ALL_BUILD进行“生成解决方案操作”。当全部生成后,对INSTALL进行“生成解决方案操作”即可完成安装。

    • boost的编译

      打开VS开发者命令提示符窗口,切换到boost源码的根目录下,在命令行执行.\boostrap.bat命令即可完成编译。

    • boost的安装

      在VS开发者命令提示符窗口,切换到boost源码的根目录,在命令行执行,\b2 install --prefix=D:\programs\pcl_suites\boost-install\即可完成安装。

    • PCL的编译

      使用cmake-gui,将源代码目录和编译结果的存放目录填入指定位置,点击Configure。选中cmake的Advanced和Grouped选项,对显示有“xxx-NOTFOUND”的项目根据组件的存放位置进行设定。其中boost、flann、vtk、eigen为必须配置的选项,否则会报错。配置没错误后,点击Generate即可完成编译。

      tips:由于eigen3x版本变化较大,因此需要手动将源代码中的FindEigen3.cmake文件放在cmake的D:\programs\cmake\share\cmake-3.1\Modules目录下,否则会报错。

    • PCL的安装

      使用VS打开cmake生成的PCL.sln,对ALL_BUILD进行生成解决方案操作,该过程比较长(我的机器大概跑了将近一个小时),请耐心等待。而后,对INSTALL进行生成解决方案操作,即可完成安装。

  3. 运行第一个小例子

    这里使用到的例子是pcl官网上的passthrough的滤波实例,大家可以去 http://pointclouds.org/documentation/tutorials/passthrough.php#passthrough 下载。

    在VS中进行编译运行时,有如下几个注意事项:

    • 在项目属性->配置属性->VC++目录中,对包含目录和库目录进行配置。包含目录要添加pcl、boost、eigen的include路径;库目录要添加pcl的lib路径
    • 在项目属性->配置属性->C/C++->命令行中,添加-D_SCL_SECURE_NO_WARNINGS选项。
    • 在项目属性->配置属性->链接器->输入->附加依赖项中将pcl安装后产生的所有.lib文件的路径添加至此。
    • 在项目的Debug目录下放置所有pcl安装后产生的dll文件。

希望大家能快速装好PCL,在图像处理领域勇攀高峰!加油^_^

从源码编译安装PCL并运行第一个小例子的更多相关文章

  1. Eureka 源码编译安装部署---Eureka运行eureka-server服务

    ---恢复内容开始--- 折腾了几天,终于运行好了,两个字:佩服 首先感谢这个大佬的博客支持:https://www.cnblogs.com/lifuping/p/5663127.html 1.首先在 ...

  2. 烂泥:mysql5.5数据库cmake源码编译安装

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 以前也写过一篇有关mysql5.0源码编译的文章,该文章为<烂泥:mysql5.0数据库源码编译安装>.但是MySQL自5.5版本以后,就开 ...

  3. Linux系统 - 源码编译安装Nginx

    什么是Nginx? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器,在高连接并发的情况下N ...

  4. 源码编译安装lnmp环境

    一.源码编译安装步骤 首先说明源码安装的好处   速度快,可自定义路径 主要有三步:1.配置 进入源码安装包  ./configure --prefix=/uer/local/nginx  可指定参数 ...

  5. 保姆级教程——Ubuntu16.04 Server下深度学习环境搭建:安装CUDA8.0,cuDNN6.0,Bazel0.5.4,源码编译安装TensorFlow1.4.0(GPU版)

    写在前面 本文叙述了在Ubuntu16.04 Server下安装CUDA8.0,cuDNN6.0以及源码编译安装TensorFlow1.4.0(GPU版)的亲身经历,包括遇到的问题及解决办法,也有一些 ...

  6. centos7 源码编译安装TensorFlow CPU 版本

    一.前言 我们都知道,普通使用pip安装的TensorFlow是万金油版本,当你运行的时候,会提示你不是当前电脑中最优的版本,特别是CPU版本,没有使用指令集优化会让TensorFlow用起来更慢. ...

  7. 【转载】Ogre3d 2.1 源码编译安装教程

    原文:Ogre3d 2.1 源码编译安装教程 今年是3D手游年,今年也是游戏引擎战争进入白热的一年. 移动游戏的红海时代,让各大端游也忍不住纷纷伸出大白腿,Unreal.CryEngine纷纷宣布自己 ...

  8. [笔记] Ubuntu 18.04源码编译安装OpenCV 4.0流程

    标准常规安装方法安装的OpenCV版本比较低,想尝鲜使用4.0版本,只好源码安装. 安装环境 OS:Ubuntu 18.04 64 bit 显卡:NVidia GTX 1080 CUDA:10.0 c ...

  9. CentOS 7.4 源码编译安装 Redis

    一.CentOS 7.4  源码编译安装 Redis 1.下载源码并解压 wget http://download.redis.io/releases/redis-4.0.10.tar.gz tar ...

随机推荐

  1. PTA(Basic Level)1010.一元多项式求导

    设计函数求一元多项式的导数.(注:\(x^n\)(\(n\)为整数)的一阶导数为\(nx^{n−1}\).) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数) ...

  2. Flink初探-为什么选择Flink

    本文主要记录一些关于Flink与storm,spark的区别, 优势, 劣势, 以及为什么这么多公司都转向Flink. What Is Flink 一个通俗易懂的概念: Apache Flink 是近 ...

  3. 2019.07.09 纪中_B

    错失AK记 2019.07.09[NOIP提高组]模拟 B 组 明明今天的题都很水,可就是没蒟蒻. 写题的时候: T0一眼高精(结果没切)T1看到2啊8啊果断转二进制观察,发现都是左移几位然后空出的位 ...

  4. Timetable CodeForces - 946D (区间dp)

    大意: n天, 每天m小时, 给定课程表, 每天的上课时间为第一个1到最后一个1, 一共可以逃k次课, 求最少上课时间. 每天显然是独立的, 对每天区间dp出逃$x$次课的最大减少时间, 再对$n$天 ...

  5. [wpf] collectionViewsource 排序 和分组

    xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase" xmlns:swd="clr-n ...

  6. mysql远程连接错误10038--navicat for mysql (10038)

    1.确定3306端口是否对外开放 如果是阿里云服务器,需要添加安全组规则 2.授权 执行sql,账号密码按照自己服务器而定 grant all privileges on *.* to 'root'@ ...

  7. vue项目1-pizza点餐系统3-路由知识点补充

    1.可以通过tag修改router-link的默认标签 <!--router-link标签默认是a标签,tag标签可以修改默认标签 --> <li><router-lin ...

  8. 搜索框focus 搜索面板显示 点击别处消失 从浏览器别的页面回来消失

    开始是设置了回到页面使display:none(离开页面操作失效),但是发现回到页面,面板显示,dom获取却为null,于是做了个延时的处理 currentPage: function() { var ...

  9. iPhone屏幕适配,历史及现状(http://hjcapple.github.io/2014/10/10/iphone-screen.html)

    iPhone屏幕适配,历史及现状 初代iPhone 2007年,初代iPhone发布,屏幕的宽高是320×480像素.下文也是按照宽度,高度的顺序排列.这个分辨率一直到iPhone 3GS的也保持不变 ...

  10. time、date、datetime、timestamp和year

    在此声明mysql数据库 时间上总共有五中表示方法:它们分别是 time.date.datetime.timestamp和year. time : “hh:mm:ss”格式表示的时间值,格式显示TIM ...