可视化(visualization)是利用计算机图形学和图像处理技术,将数据转换图像在屏幕上显示出来,并进行交互处理的的理论,方法和技术,

pcl_visualization库建立了能够快速建立原型的目的和可视化算法对三维点云数据操作的结果。类似于opencv的highgui例程显示二维图像,在屏幕上绘制基本的二维图形,库提供了以下几点:

(1)渲染和设置视觉特性的方法(如颜色、大小、透明度等)在PCL任意n维的点云数据集pcl::PointCloud format

(2)在屏幕上绘制基本的3D形状的方法(例如,圆柱体,球体,线,多边形等),无论是从点集或参数方程;

(3)一个直方图可视化模块(pclhistogramvisualizer)的二维图;

(4)大量的几何和颜色处理pcl::PointCloud datasets

.

1.   class  pcl::visualization::CloudViewer   类CloudViewer实现创建点云可视化的窗口,以及相关的可视化功能

Public Member Functions

CloudViewer (const std::string &window_name)   构建可视化点云窗口,窗口名为window_name

~CloudViewer ()     注销窗口相关资源

void

showCloud (const ColorCloud::ConstPtr &cloud, const std::string &cloudname="cloud")

可视化窗口显示cloud对应的点云,考虑到多个点云用键值cloudname来限定是哪一个点云

bool

wasStopped (int millis_to_wait=1)

判断用户是否已经关闭窗口,如果是则需要注销窗口

void

runOnVisualizationThread (VizCallable x, const std::string &key="callable")

在窗口运行期间处理x的回调函数,key为键值标识此回调函数,知道窗口关闭

值调用回调函数一次

void

removeVisualizationCallable (const std::string &key="callable")

删除key对应的回调函数

boost::signals2::connection

注册键盘事件回调函数,cookie为回调时的参数,callback为回调函数的指针

template

boost::signals2::connection

registerKeyboardCallback (void(T::*callback)(const pcl::visualization::KeyboardEvent &, void *), T &instance, void *cookie=NULL)

同上,其中的instance 指向是实现该回到函数的对象

(2)太多了这里就贴出所有的关于可视化的类    对于类的成员就不再一一介绍

等等*****************************************8

应用实例

cloud_viewer.cpp:

#include //类cloud_viewer头文件申明

#include //标准输入输出头文件申明

#include //I/O相关头文件申明

#include //PCD文件读取

/**********************************************************************************

函数是作为回调函数,在主函数中只注册一次 ,函数实现对可视化对象背景颜色的设置,添加一个圆球几何体

*********************************************************************************/

intuser_data;voidviewerOneOff (pcl::visualization::PCLVisualizer&viewer)

{

viewer.setBackgroundColor (1.0, 0.5, 1.0); //设置背景颜色

pcl::PointXYZ o; //存储球的圆心位置

o.x = 1.0;

o.y= 0;

o.z= 0;

viewer.addSphere (o,0.25, "sphere", 0); //添加圆球几何对象

std::cout << "i only run once" <<:endl>

}/***********************************************************************************

作为回调函数,在主函数中注册后每帧显示都执行一次,函数具体实现在可视化对象中添加一个刷新显示字符串

*************************************************************************************/

voidviewerPsycho (pcl::visualization::PCLVisualizer&viewer)

{static unsigned count = 0;

std::stringstream ss;

ss<< "Once per viewer loop:" << count++;

viewer.removeShape ("text", 0);

viewer.addText (ss.str(),200, 300, "text", 0);//FIXME: possible race condition here:

user_data++;

}/**************************************************************

首先加载点云文件到点云对象,并初始化可视化对象viewer,注册上面的回

调函数,执行循环直到收到关闭viewer的消息退出程序

*************************************************************/

intmain ()

{

pcl::PointCloud<:pointxyzrgba>::Ptr cloud (new pcl::PointCloud<:pointxyzrgba>); //声明cloud

pcl::io::loadPCDFile ("my_point_cloud.pcd", *cloud); //加载点云文件

pcl::visualization::CloudViewer viewer("Cloud Viewer"); //创建viewer对象//showCloud函数是同步的,在此处等待直到渲染显示为止

viewer.showCloud(cloud);//该注册函数在可视化的时候只执行一次

viewer.runOnVisualizationThreadOnce (viewerOneOff);//该注册函数在渲染输出时每次都调用

viewer.runOnVisualizationThread (viewerPsycho);while (!viewer.wasStopped ())

{//此处可以添加其他处理//FIXME: Note that this is running in a separate thread from viewerPsycho//and you should guard against race conditions yourself...

user_data++;

}return 0;

}

编译结果如下

未完待续*************************8888888

pcl画圆球_PCL 可视化-阿里云开发者社区相关推荐

  1. pg数据库生成随机时间_postgresql 时区与时间函数-阿里云开发者社区

    postgresql 时区与时间函数 rudygao 2016-02-03 1951浏览量 简介: --把时间戳转成epoch值 postgres=# select extract(epoch fro ...

  2. 博客同步至阿里云开发者社区,快来帮我涨人气吧

    博客同步至阿里云开发者社区,快来帮我涨人气吧! 直达链接! 直达链接! 直达链接! 直达链接! 直达链接! https://developer.aliyun.com/profile/sijaicxpx ...

  3. freebsd mysql 安装_Freebsd中mysql安装及使用笔记-阿里云开发者社区

    Freebsd中mysql安装及使用笔记 x3d 2009-07-31 662浏览量 简介: 1.安装 一开始连mysql的软件包在freebsd中叫什么都不知道: 依稀属于databases类,先到 ...

  4. 杭州内推 | 阿里云开发者社区招聘计算机视觉算法工程师(2022年毕业生)

    合适的工作难找?最新的招聘信息也不知道? AI 求职为大家精选人工智能领域最新鲜的招聘信息,助你先人一步投递,快人一步入职! 阿里云 阿里巴巴集团拥有海量的图像/视频数据,强大的计算能力和巨大的市场空 ...

  5. mysql join 索引 无效_ORACLE MYSQL中join 字段类型不同索引失效的情况-阿里云开发者社区...

    ORACLE MYSQL中join 字段类型不同索引失效的情况 重庆八怪 2016-12-29 780浏览量 简介: 关于JOIN使用不同类型的字段类型,数据库可能进行隐士转换,MYSQL ORACL ...

  6. db h2 数据类型_H2数据库函数及数据类型概述-阿里云开发者社区

    H2数据库函数及数据类型概述 jieforest 2015-01-29 573浏览量 简介: H2数据库函数及数据类型概述 一.H2数据库常用数据类型 INT类型:对应java.lang.Intege ...

  7. rcs开机启动mysql_linux添加开机自启动脚本示例详解-阿里云开发者社区

    linux添加开机自启动脚本示例详解 double2li 2017-04-14 1652浏览量 简介: linux下(以RedHat为范本)添加开机自启动脚本有两种方法,先来简单的;一.在/etc/r ...

  8. mysql double 存储_关于MYSQL中FLOAT和DOUBLE类型的存储-阿里云开发者社区

    关于MYSQL中FLOAT和DOUBLE类型的存储 重庆八怪 2016-04-12 844浏览量 简介: 关于MYSQL中FLOAT和DOUBLE类型的存储 其实在单精度和双精度浮点类型存储中其存储方 ...

  9. a记录 mysql_[a]-和[a]相关的内容-阿里云开发者社区

    HDOJ 1202 The calculation of GPA Problem Description 每学期的期末,大家都会忙于计算自己的平均成绩,这个成绩对于评奖学金是直接有关的.国外大学都是计 ...

最新文章

  1. win10 java applet_win10系统的ie11浏览器无法打开Java applet
  2. SpringBoot配置文件放在jar外部
  3. 浅谈工作流引擎的几个关键因素
  4. 【Python】Effective Python 读书笔记
  5. 【数据结构与算法】字符串匹配 BF算法 RK算法
  6. 2021上半年ICPC各类赛事时间日程
  7. 大数据-05-Spark之读写HBase数据
  8. python+Selenium2+chrome构建动态网页爬虫工具
  9. PDF控件PDF Creator V5.5.2.3发布 | 支持插入PDF417条形码
  10. 微信小程序wxParse富文本解析
  11. 局域网游戏联机原理解析
  12. 多线程爬取图片(生产者-消费者模式)
  13. 单页面模式和多页面模式详解
  14. signature=eccf62e7a0495066ee494ebfc791f8cc,测试帖,勿进
  15. c语言 q15格式,DSP 数据 Q格式
  16. 20162316刘诚昊 Java Queue的测试
  17. NDK - JNI官方中文资料
  18. 极简Python语法(5)
  19. react中的this.state与this.setState的区别
  20. python吃显卡还是内存条_加内存条还是加显卡??

热门文章

  1. macOS Catalina下RX580/Vega系列显卡启动后DP输出黑屏和ALC1220声卡无法驱动的解决方案
  2. 关于跨域获取cookie问题的解决
  3. 如何使用十六进制颜色值
  4. 详解电脑蓝屏怎么回事
  5. BootStrap的介绍与案例使用
  6. 计算机系统集成 行业标准,行业标准信息服务平台
  7. Android:登录保存回显用户信息或配置文件(sharedpreferences)
  8. Android:Android学习路线图
  9. yml不变成小叶子_关于鹤望兰,你不知道的小秘密,花农告诉你,大叶子不开花...
  10. 线索二叉树是一种什么结构_技术面试之常用的数据结构