博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=244

把代码转换成符合PCL思路和句法的代码,对于第一次接触该基础架构的人会显得比较困难,会提出若干疑问。本小节讲述如何编写新的PCL类以及经常碰到的问题,也解释了在PCL目录树下,与全球PCL用户共享你的代码有哪些优势,这里提倡共享,你也可以把这种观念应用于其他类似的项目中,无论读者是自己直接写,还是改写已有代码,本节的内容都很有帮助,最重要的是可以帮助读者快速阅读了解PCL中的源码。

优势:为什么加入PCL开源开发模式?

大家可能问到的第一个问题,也是我们要回答的问题,就是:为什么要加入PCL,它的优势在什么地方?这个问题假设你已经认定PCL提供的这套工具和库对你的工程是有用的,因此你已经是一个用户了。因为开源项目大多都是志愿工作,开发者通常来自世界各地,所以开发过程有一定进度、有一定的反复是正常的。这意味着:

  ·开发者不可能事先考虑他们编写的代码片段可能所有的用途,但也奠定了一定基础……

  ·由于有限的资源和时间,发现解决方案以及应用程序中所有可能出现的漏洞是困难的,由于资源的限制,可能开始的时候进行处理也是不合适的。

在这两种情况下,每个人都很可能遇到了这种情况:要么他们找不到需要的算法或方法,要么现存的方法和应用有漏洞。因此下一步很明显:改变现有代码以适应你的应用程序/问题。当我们在下一节中讨论如何去做的时候,还是要提供我们提出的第一个问题的答案,也就是“为什么要在PCL中共享劳动成果呢?”,依我们的观点,有很多优势存在,引用Eric Raymond的Linus法则:“given enough eyeballs, all bugs are shallow. 给予足够的关注,所有的漏洞都是显而易见的”它的意思是公布你的代码,允许其他人去查看,你的代码就有机会优化和提高鲁棒性,尤其是在出现一个活跃的社区里,PCL就是一个这样的社区。除了上面讲到的,你的贡献可能会有以下众多的作用:

  ·别人以你的代码为基础建立新的项目;

  ·你学习其他人新的用法(例如,你设计的时候没有考虑的非常有用的设计);

  ·无忧无虑的维护者身份(例如,你可以休假一段时间,回来看到你的代码还在更新维护中。其他贡献者会配置它以适应最新的平台、最新的编译器等等);

  ·你在社区的名声会提高——人人都喜欢受人敬仰。

对于大多数人来讲,上面所提到的都适用。对于另一些人,只有一些适用。为了举例说明代码转换过程,我们选择下面的例子,实现对给定点云中的强度数据应用双边滤波器,把结果保存到磁盘。首先,在本书提供光盘的第3章例1文件夹中,打开名为mainBilateralFilter.cpp的代码文件,这里打开的源代码段包括以下步骤:

  ·输入输出代码块:从磁盘读数据,向磁盘写数据;

  ·初始化代码块:用KD树建立一种搜索最近邻的方法;

  ·实际算法代码块:对每个点进行双边滤波处理。

我们的目的是把给出的源码程序转换成PCL的类,以便能够在其他地方重复使用。

敬请关注PCL(Point Cloud Learning)中国更多的点云库PCL(Point Cloud Library)相关官方教程。

参考文献:

1.朱德海、郭浩、苏伟.点云库PCL学习教程(ISBN 978-7-5124-0954-5)北京航空航天出版社2012-10

如何编写新的PCL类的更多相关文章

  1. PCL基础3.2-如何编写新的PCL类

    1.文件名为mainBilateralFilter.cpp的文件内容如下 #include <pcl/point_types.h> #include <pcl/io/pcd_io.h ...

  2. C++新特性(类)(转载)

    C++新特性(类)里面讲的很清楚,转给大家分享一下 类机制: 类是对某一类对象的抽象:对象是某一类的实例: 类是一种复杂的数据类型,将不同类型的数据和这些数据相关的操作封装在一起的集合体: 通过一道程 ...

  3. Hibernate的多表查询,分装到一个新的实体类中的一个方法

    不知道是否还有其他方法实现,请高人指点. 如果涉及到多张表多字段查询,并且想利用查询出来的字段在界面层构建一个新的实体类,可以使用这种方法: 如果查询出来的多字段中,有多个字段的名字都相同(如想查询出 ...

  4. 一个由印度人编写的VC串口类

    http://www.cnblogs.com/lwngreat/p/4098374.html 软件介绍 一个由印度人编写的VC串口类(也是一种VC串口控件),他还配合这个类写了VC 串口通信方面的一些 ...

  5. C#放缩、截取、合并图片并生成高质量新图的类

    原文:C#放缩.截取.合并图片并生成高质量新图的类 using System;using System.Drawing;using System.Drawing.Imaging;using Syste ...

  6. JDK1.8新特性——Optional类

    JDK1.8新特性——Optional类 摘要:本文主要学习了JDK1.8新增加的Optional类. 部分内容来自以下博客: https://www.cnblogs.com/1ning/p/9140 ...

  7. Directx11教程(8) 一个新的camera类

    原文:Directx11教程(8) 一个新的camera类      本章我们将替换掉CameraClass类,实现一个稍微靠谱点的摄像机类.并通过Q,W,E,A,S,D,Z,X,C等按键实现摄像机的 ...

  8. 098 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 02 编写并测试Subject类

    098 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 02 编写并测试Subject类 本文知识点:编写并测试Subject类 说明: ...

  9. 099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类

    099 01 Android 零基础入门 02 Java面向对象 03 综合案例(学生信息管理) 02 案例分析及实现 03 编写并测试Student类 本文知识点:编写并测试Subject类 说明: ...

随机推荐

  1. RTSP转RTMP-HLS网页无插件视频直播-EasyNVR功能介绍-音频开启

    EasyNVR简介 EasyNVR能够通过简单的摄像机通道配置.存储配置.云平台对接配置.CDN配置等,将统监控行业里面的高清网络摄像机IP Camera.NVR.移动拍摄设备接入到EasyNVR,E ...

  2. Entity Framework 4.1:多对多的关系

    这篇文章讨论多对多的关系. 让我们从最简单的例子开始.我们让 EF4.1 来推断表的映射.我在订单和雇员之间建模多对多的关系. )] publicstring CustomerName { get; ...

  3. html学习笔记(1)--处理特殊字符以及其他的一些小细节

    冬日深夜,照着一本html的书籍练习,忍不住将一些常识记下来.书名是:<HTML与CSS入门经典> by [美] Julie Meloni(这是一位女士) 1.在大多数浏览器中,<s ...

  4. Swift 学习笔记 (解决Swift闭包中循环引用的三种方法)

    话不多说 直接上代码 class SmartAirConditioner { var temperature:Int = //类引用了函数 var temperatureChange:((Int)-& ...

  5. python的类型

    弱类型是可以自由转换的,如js,字符串和数字能相加 强类型不能自由转换,如python,要加上函数转成相同的类型

  6. Carthage的使用

    1.安装Carthage https://github.com/Carthage/Carthage/releases 2.进入Cartfile文件所在的目录地址 cd 拖入文件Cartfile,把最后 ...

  7. Machine Learning No.2: Linear Regression with Multiple Variables

    1. notation: n = number of features x(i) = input (features) of ith training example  = value of feat ...

  8. C语言“快速排序”函数写法

    代码是:C语言中快速排的写法,要加入头文件   <stdlib.h> qsort(数组名, 长度, 数据类型大小,比较算子 ): #include <stdio.h> #inc ...

  9. 为什么在实际的 kaggle 比赛中 gbdt 和 random forest 效果非常好?

    https://www.zhihu.com/question/51818176/answer/127637712

  10. shell之起步

    初学者,先不要考虑好不好看,效率高不高!先要实现需求!需求是第一位! grep.sed.awk.三剑客! 学好shell,需要前提! 1.linux系统命令熟练 2.搞清楚正则,grep.sed.aw ...