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

可视化点云颜色特征

多数情况下,点云显示不采用简单的XYZ类型,常用的点云类型是XYZRGB点,也包含颜色数据,除此之外,用户还希望给指定点云定制颜色,以使点云在视窗中比较容易区分,如图1所示,点赋予不同的颜色表征其对应的z轴值不同。PCLVizualizer可根据所存储的颜色数据为点云赋色,或者按照用户自定义的颜色为点云着色。许多设备,比如微软Kinect,可获取带有RGB数据的点云,PCLVizualizer可视化类可使用这种颜色数据为点云着色,rgbVis函数中的代码用于完成这种操作。

图1 可视化带颜色信息的点云

与前面的代码相比,这个代码没有太大的改变。

boost::shared_ptr<pcl::visualization::PCLVisualizer> rgbVis (pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr cloud)

首先,与前面简单示例相比点云类型发生了变化,这里使用的点云带有RGB数据的属性字段,这是比较关键的一点,没有RGB字段的点云(点云的类型不一定必须只限定为点类型PointXYZRGB,只要包括三个颜色分量即可),PCLVisualizer类将不知道该为点云着什么颜色。

pcl::visualization::PointCloudColorHandlerRGB<pcl::PointXYZRGB> rgb(point_cloud_ptr);

其次,设置窗口的背景颜色后,我们创建一个颜色处理对象PointCloudColorHandlerRGB,PCLVisualizer类利用这样的对象显示自定义颜色数据,在这个示例中,PointCloudColorHandlerRGB对象得到每个点云的RGB颜色字段,其他的类似于PointCloudColorHandlerRGB对象有多种应用,在下一个示例中我们将学习另一种着色方法,但是这个处理也可用于其他操作,比如由其他字段映射出来的颜色、或者由几何特征映射出来的颜色,更详细的信息请参照API文档

viewer->addPointCloud<pcl::PointXYZRGB> (cloud, rgb, "sample cloud");

最后,当我们添加点云的时候,我们可以指定添加到视窗中点云的PointCloudColorHandlerRGB着色处理对象。

可视化点云自定义颜色特征

第三个示例函数是演示怎样给点云着上单独的一种颜色,我们可以利用该技术给指定的点云着色,以使所着色的点云区别与其他点云,如图2所示用户自定义所有点云颜色为绿色,在这个示例中,customColourVis函数中,我们将点云赋为绿色,在这里,我们也设置了较大的点云显示尺寸,以使点云及颜色更明显。

图2 单独一种颜色的点云

与前面情况相同,下面的这段示例代码跟上面那段示例代码没有太大改变。

boost::shared_ptr<pcl::visualization::PCLVisualizer> customColourVis (pcl::PointCloud<pcl::PointXYZ>::ConstPtr cloud)

这个示例中所用的点云类型是XYZ类型。在自定义着色处理对象PointCloudColorHandlerCustom中,没有那个点云字段用作颜色字段,不论所用的点云是什么类型,我们都可以为点云着自定义颜色。

pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> single_color (cloud, , , );

所以,这里我们需要创建一个自定义颜色处理器PointCloudColorHandlerCustom对象,并设置颜色为纯绿色。

viewer->addPointCloud<pcl::PointXYZ> (cloud, single_color, "sample cloud");

PCLVisualizer可视化类(2)的更多相关文章

  1. PCLVisualizer可视化类

    PCLVisualizer可视化类 转载自 http://www.cnblogs.com/li-yao7758258/p/6445127.html 如有疑问,请转至该网址留言询问 PCLVisuali ...

  2. PCLVisualizer可视化类(4)

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=168 多视口显示 所示,并进行比较分析,利用不同的搜索半径,基于同一点云计算 ...

  3. PCLVisualizer可视化类(3)

    viewer->addLine<pcl::PointXYZRGB> (cloud->points[0], cloud->points[cloud->size() - ...

  4. PCLVisualizer可视化类(1)

    PCLVisualizer可视化类是PCL中功能最全的可视化类,与CloudViewer可视化类相比,PCLVisualizer使用起来更为复杂,但该类具有更全面的功能,如显示法线.绘制多种形状和多个 ...

  5. PCLVisualizer可视化类(5)

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=171 自定义交互 多数情况下,默认的鼠标和键盘交互设置不能满足用户的需求,用 ...

  6. 基于PCL绘制模型并渲染

    博客转载自:https://blog.csdn.net/wokaowokaowokao12345/article/details/51321988 前言 抛开算法层面不谈,要利用PCL库中PCLVis ...

  7. PCL可视化显示 直接加载显示pcb文件

    简单可视化类,是指直接在程序中使用,而且不支持多线程. #include<iostream> #include<pcl\point_cloud.h> #include<p ...

  8. [翻译] FastReport Class Hierarchy (FastReport 组件类层次结构)

    "TfrxComponent" is the base class for all FastReport components. Objects of this type have ...

  9. 数据可视化:绘图库-Matplotlib

    为什么要绘图? 一个图表数据的直观分析,下面先看一组北京和上海上午十一点到十二点的气温变化数据: 数据: 这里我用一段代码生成北京和上海的一个小时内每分钟的温度如下: import random co ...

随机推荐

  1. Oracle数据库体系结构(4)oracle控制文件

    控制文件的概述 1.控制文件是oracle数据库非常重要的物理文件,描述了整个数据库的物理结构信息,包括数据库名称.数据文件与重做日志文件的名称与位置,日志序列号等信息.数据库实例根据初始化参数CON ...

  2. mini2440移植uboot 2014.04(三)

    我修改的代码已经上传到github上,地址:https://github.com/qiaoyuguo/u-boot-2014.04-mini2440.git 参考文档: s3c2440手册(下载地址) ...

  3. 算法(Algorithms)第4版 练习 1.5.1

    id数组的变化情况: 0 1 2 3 4 5 6 7 8 9 10 components 9 0 0 1 2 3 4 5 6 7 8 0 9 components 3 4 0 1 2 4 5 6 7 ...

  4. 用 CSS3 创建一个漂亮的多种色彩的菜单

    1. [图片] thumb.png ​2. [代码][HTML]代码 <!DOCTYPE html><html lang="en" >    <hea ...

  5. Codeforces 448C Painting Fence:分治

    题目链接:http://codeforces.com/problemset/problem/448/C 题意: 有n个木板竖着插成一排栅栏,第i块木板高度为a[i]. 你现在要将栅栏上所有地方刷上油漆 ...

  6. django1.8.2 建站实现分页显示功能

    个人经验: django先写view,在再写url,最后写html文件. 要实现某个功能,先google查找相关文章,在到文档中寻找相关章节,最后本地实现功能. 1.django1.8.2 实现分页功 ...

  7. 代码题(14)— 合并有序链表、数组、合并K个排序链表

    1.21. 合并两个有序链表 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出 ...

  8. double 与0比较时有个精度问题,有时需精确到小数点后面几位,例如与>0.0001,而不能与>0比较

    double 与0比较时有个精度问题,有时需精确到小数点后面几位,例如与>0.0001,而不能与>0比较 例如杭电1408 盐水的故事 ac #include<iostream> ...

  9. python-Django收集主机信息

    1.创建工程simplecmdb django-admin.py startproject simplecmdb 2.创建应用 cd simplecmdb python manage.py start ...

  10. linux命令学习笔记(36):diff 命令

    diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方. diff在命令行中打印每一个行的改动.最新版本的diff还支持二进制文件.diff程序 ...