博客转载自: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. Unity3D研究院编辑器之脚本设置ToolBar及脚本设置顶视图

    Unity版本5.3.2 如下图所示,ToolBar就是Unity顶部的那一横条.这里的所有按钮一般情况下都得我们手动的用鼠标去点击.这篇文章我们说说如果自动操作它们 1.自动点击左边四个按钮 (拖动 ...

  2. Unix环境高级编程—进程控制(二)

    一.函数wait和waitpid 今天我们继续通过昨天那个死爹死儿子的故事来讲(便于记忆),现在看看wait和waitpid函数. #include<sys/wait.h> pid_t w ...

  3. ES5中的类与继承

    最近在重新复习TypeScript,看到类这块的时候自然会和ES5中的类写法进行对比加深印象. 发现ES5的类与继承一些细节还是挺多的,时间久了容易忘记,特此记录下. 首先是ES5的类定义,这没什么好 ...

  4. 【题解】P4886快递员

    [题解]P4886 快递员 淀粉质好题!!!加深了我对点分治的理解.最近分治学了好多啊. 题目大意 给定你一颗有边权的树,再给你\(m\)和点对,请你在树上选出来一个点,使得所有点对到这个点的距离的最 ...

  5. 警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:Zhuo' did not find a matching property.

    eclipse里面配置tomcat方法:window -- show view -- other -- 找到servers 点击finish 就会出现servers选项卡在选项卡中右键鼠标 new - ...

  6. 微信小程序配置详解

    在之前已经通过微信公众平台的官方网站https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/devtools.html,注册好小程序并且登录成功后(这里主 ...

  7. java开发环境搭建-1

    安卓开发所需软件: JDK Eclipse Android-Sdk ADT 其中jdk的下载和安装,详细见http://www.cnblogs.com/zhuxiaohui/p/3620685.htm ...

  8. hihocoder hiho第38周: 二分·二分答案 (二分搜索算法应用:二分搜索值+bfs判断可行性 )

    题目1 : 二分·二分答案 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在上一回和上上回里我们知道Nettle在玩<艦これ>,Nettle在整理好舰队之后 ...

  9. Cannot load JDBC driver class 'com.mysql.jdbc.Driver '

    最近在学JAVA, SSM, 照着网上的例子系统启动后总是报这个错(IDE :IEDA): HTTP Status 500 - Request processing failed; nested ex ...

  10. IOC/DI控制反转与依赖注入

    IOC/DI控制反转与依赖注入 IOC和DI表现的效果的是一样的只不过对于作用的对象不同,有了不一样的名字. 先用一个现实的例子来说明IOC/DI表现出来的效果.