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

多视口显示

用户经常需要通过多视口比较点云,如果用户在同一个视口绘制点云,会导致信息混乱。PCLVisualizer可视化类允许用户通过不同视口(Viewport)绘制多个点云,这样方便对点云进行比较分析,viewportsVis函数的代码演示如何用多视口来显示点云计算法线的方法结果对比,如图1所示,并进行比较分析,利用不同的搜索半径,基于同一点云计算出对应不同半径的两组法线,第一组,搜索半径为0.05,基于该半径计算的法线用黑色背景显示,第二组,搜索半径为0.1,基于该半径计算的法线用灰色背景显示。这样比较两组法线,用户很容易观察到不同算法参数处理效果的差异,通过这种方法,用户可以很容易对算法参数做出选择,并实时的得到所设置参数的处理效果。

图1 多视口显示示例

boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("3D Viewer"));
viewer->initCameraParameters ();

上面是创建视窗对象的标准代码。

int v1();
viewer->createViewPort (0.0, 0.0, 0.5, 1.0, v1);
viewer->setBackgroundColor (, , , v1);
viewer->addText ("Radius: 0.01", , , "v1 text", v1);
pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGB> rgb (cloud);
viewer->addPointCloud<pcl::PointXYZRGB> (cloud, rgb, "sample cloud1", v1);

上面几行代码,创建新的视口,所需的四个参数是视口在X轴的最小值、最大值、Y轴的最小值、最大值,取值在0-1之间。我们创建的视口分布于窗口的左半部分,最后一个字符串参数,用来唯一标识该视口,在其他改变该视口内容的调用中,需要以该唯一标识为参数,我们还设置该视口的背景颜色,添加一个标签以区别于其他视口,利用RGB颜色着色器并添加点云到当前视口中。

int v2(0);
viewer->createViewPort (0.5, 0.0, 1.0, 1.0, v2);
viewer->setBackgroundColor (0.3, 0.3, 0.3, v2);
viewer->addText ("Radius: 0.1", 10, 10, "v2 text", v2);
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZRGB> single_color (cloud, 0, 255, 0);
viewer->addPointCloud<pcl::PointXYZRGB> (cloud, single_color, "sample cloud2", v2);

然后,我们对第二视口做同样的操作,使所创建的视点分布于右半窗口。我们将该视口背景赋予灰色,以便可以明显区别,虽然添加了同样的点云,但这次给点云用自定义颜色着色。

viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, , "sample cloud1");
viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, , "sample cloud2");
viewer->addCoordinateSystem (1.0);

上面三行代码为所有视口设置属性,大多数PCLVisualizer类的方法成员都有一个可以选择的视口ID参数,当设置该参数时,该方法只作用于所设置视口,不设置该参数的话,该方法作用于所有视口,就像这三行代码一样。

viewer->addPointCloudNormals<pcl::PointXYZRGB, pcl::Normal> (cloud, normals1, , 0.05, "normals1", v1);
viewer->addPointCloudNormals<pcl::PointXYZRGB, pcl::Normal> (cloud, normals2, , 0.05, "normals2", v2);

最后,我们添加法线,每个视口都有一组对应的法线。

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

  1. PCLVisualizer可视化类

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

  2. PCLVisualizer可视化类(3)

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

  3. PCLVisualizer可视化类(1)

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

  4. PCLVisualizer可视化类(2)

    博客转载自:http://www.pclcn.org/study/shownews.php?lang=cn&id=163 可视化点云颜色特征 所示,点赋予不同的颜色表征其对应的z轴值不同.PC ...

  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. Data Structure Array: Longest Monotonically Increasing Subsequence Size

    http://www.geeksforgeeks.org/longest-monotonically-increasing-subsequence-size-n-log-n/ #include < ...

  2. 【Flask】query可用参数

    ### query可用参数:1. 模型对象.指定查找这个模型中所有的对象.2. 模型中的属性.可以指定只查找某个模型的其中几个属性.3. 聚合函数. * func.count:统计行的数量. * fu ...

  3. 机器学习相关知识整理系列之一:决策树算法原理及剪枝(ID3,C4.5,CART)

    决策树是一种基本的分类与回归方法.分类决策树是一种描述对实例进行分类的树形结构,决策树由结点和有向边组成.结点由两种类型,内部结点表示一个特征或属性,叶结点表示一个类. 1. 基础知识 熵 在信息学和 ...

  4. java入门了解15

    1.批处理文件(bat) 简单的说,批处理的作用就是自动的连续执行多条命令 .编写bat处理文件可以使用记事本的方式: 常见批处理文件的命令: echo 表示显示此命令后的字符 tiltle 设置窗口 ...

  5. 使用JobControl控制MapReduce任务

    代码结构 BeanWritable:往数据库读写使用的bean ControlJobTest:JobControl任务控制 DBInputFormatApp:将关系型数据库的数据导入HDFS,其中包含 ...

  6. 四 Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置

    Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...

  7. linux命令学习笔记(15):tail 命令

    tail 命令从指定点开始将文件写到标准输出.使用tail命令的-f选项可以方便的查阅正在改变的日志文件, tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不但刷新 ...

  8. Windows cmd findstr

    /********************************************************************************** * Windows cmd fi ...

  9. bzoj 4103: 异或运算 可持久化Trie

    题目大意: 给定长度为n的数列X={x1,x2,...,xn}和长度为m的数列Y={y1,y2,...,ym},令矩阵A中第i行第j列的值\(A_{ij} = x_i \text{ xor } y_j ...

  10. 第k小和(搜索)

    Description [问题描述] 从n个数中选若干(至少1)个数求和,求所有方案中第k小的和(和相同但取法不同的视为不同方案).[输入格式]    第一行输入2个正整数n,k.    第二行输入这 ...