经常会遇到点云可视化的情况,这里记录一些viewer相关的代码,方便以后直接使用。


pcl源码第五章pcl_visualizer_demo.cpp介绍了各种情况的显示,如显示法线、鼠标键盘响应等。


一般在代码最后都要添加如下的主循环:

  while (!viewer.wasStopped ()){viewer.spinOnce ();}

显示点云,设置窗口背景颜色,将不同点云设置为不同的颜色,在第五章range_image_visualization.cpp中也有。

//这是siftdetect.cpp中的可视化部分
//创建对象,命名窗口为PCL Viewer
pcl::visualization::PCLVisualizer viewer("PCL Viewer");
//设置cloud_temp点云的颜色
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> keypoints_color_handler(cloud_temp, 0, 255, 0);
//设置cloud_xyz点云的颜色
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> cloud_color_handler(cloud_xyz, 255, 0, 0);
//设置背景颜色
viewer.setBackgroundColor(0.0, 0.0, 0.0);
//添加点云,第二个参数就是之前设置的点云颜色,第三的参数"cloud"是点云的id
viewer.addPointCloud(cloud_xyz, cloud_color_handler, "cloud");
//添加点云,这里其实就是将关键点显示出来,"keypoints"是其id
viewer.addPointCloud(cloud_temp, keypoints_color_handler, "keypoints");
//设置cloud_temp的渲染属性,第一个参数是属性类型,这里是将点的大小设为7
viewer.setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 7, "keypoints");

下面这个代码和上面实现的功能是一样的,只是使用了boost指针

boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer);
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> cloud_color_handler(cloud, 255, 0, 0);
viewer->addPointCloud(cloud, cloud_color_handler,"all_cloud");
pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> harris_color_handler (cloud_harris, 0, 255, 0);
viewer->addPointCloud(cloud_harris,harris_color_handler,"harris");
viewer->setPointCloudRenderingProperties (pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 5, "harris");

cloudviewer类

pcl::visualization::CloudViewer viewer("Cloud Viewer");//创建对象
viewer.showCloud(cloud);//显示
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);

一个窗口显示几幅图

    boost::shared_ptr<pcl::visualization::PCLVisualizer> for_visualizer_v (new pcl::visualization::PCLVisualizer ("crophull display"));for_visualizer_v->setBackgroundColor(255,255,255);int v1(0);for_visualizer_v->createViewPort (0.0, 0.0, 0.33, 1, v1);//位置for_visualizer_v->setBackgroundColor (0, 255, 255, v1);//第一部分背景for_visualizer_v->addPointCloud (cloud,"cloud",v1);for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR,255,0,0,"cloud");//“cloud”的颜色for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE,3,"cloud");//“cloud”点云点的大小for_visualizer_v->addPolygon<pcl::PointXYZ>(surface_hull,0,.069*255,0.2*255,"backview_hull_polyline1",v1);//添加多边形int v2(0);for_visualizer_v->createViewPort (0.33, 0.0, 0.66, 1, v2);    for_visualizer_v->setBackgroundColor (255,0, 255, v2);for_visualizer_v->addPointCloud (surface_hull,"surface_hull",v2);for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR,255,0,0,"surface_hull");for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE,8,"surface_hull");for_visualizer_v->addPolygon<pcl::PointXYZ>(surface_hull,0,.069*255,0.2*255,"backview_hull_polyline",v2);int v3(0);for_visualizer_v->createViewPort (0.66, 0.0, 1, 1, v3);for_visualizer_v->setBackgroundColor (255, 255, 0, v3);for_visualizer_v->addPointCloud (objects,"objects",v3);for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR,255,0,0,"objects");for_visualizer_v->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE,3,"objects");while (!for_visualizer_v->wasStopped()){for_visualizer_v->spinOnce(1000);}system("pause")

效果:

pcl_viewer类相关推荐

  1. 自己搜集编写的Delphi 通用函数

    { ********************************************************************** } { Currency Common Functio ...

  2. 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题

    继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...

  3. MybatisPlus忽略实体类中的非数据库字段、JPA忽略实体类中的非数据库字段、HeHibernate忽略实体类中的非数据库字段

    mybatis plus忽略映射字段时可以在实体类属性上使用以下注解: @TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的. @TableField(e ...

  4. IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...

    使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解 一.使用Hibernate自动生成实体类 1.在项目上右键,选择Add Framework Support找到 Hibern ...

  5. IDEA自动生成类注解,IDEA作者信息自动生成,IDEA类信息自动生成

    在新建类文件的时候自动生成注解,诸如我们常见的那些 作者,创建时间,TODO 等等 将以下格式的代码放在Settings -> File and Code Templates -> Inc ...

  6. javabean实体类与实体类之间的快速转换

    一.Dozer是什么? dozer是一个能把实体和实体之间进行转换的工具.只要建立好映射关系.就像是ORM的数据库和实体映射一样. 使用方法示例如下: // article(PO) -> art ...

  7. 利用dom4j将实体类转换为对应的xml报文

    利用dom4j生成xml报文 目标格式: <?xml version="1.0" encoding="GBK"?><Packet type=& ...

  8. Idea groovy表生成实体类带注释

    Idea groovy表生成实体类带注释 1.点开datasourse,打开idea带的数据库工具,具体添加数据库连接,这里不描述. 这时点击会生成一个poji 这时生成的pojo中是不带中文注释的, ...

  9. java带参数的方法笔记_具有Java参数的方法的类声明

    类声明可以包含在Java中具有参数的方法.演示此过程的程序如下: 示例class Message { public void messagePrint(String msg) { System.out ...

最新文章

  1. springboot添加多数据源连接池并配置Mybatis
  2. 技术图文:如何进行代码的重构?以封装 BigOne API 为例
  3. 1、代理服务器及haproxy基础
  4. python collections模块(数据结构常用模块)计数器Counter 双向队列deque 默认字典defaultdict 有序字典OrderedDict 可命名元组namedtuple
  5. linux驱动模块开机自动加载,以及应用程序开机自启动
  6. c语言怎么让两个函数同时进行_Excel高级筛选怎么用同时满足多个条件进行筛选...
  7. C# 常用接口学习 IEnumerableT
  8. java ldap userpassword 解密_Spring Boot中使用LDAP来统一管理用户信息
  9. 计算机设计大赛国奖作品_4. 界面设计
  10. 突发!联想被责令立即开展全面整改
  11. activate激活虚拟环境无效解决办法
  12. 过度使用微信,正在让人越来越焦虑
  13. Windows Server 2008 R2的DHCP高可用
  14. CSDN博客——修改字体、字号与颜色
  15. 基于冷冻电镜图像的低通滤波(Lowpass Filter)算法
  16. C语言入门递归算法——汉诺塔(简单易懂,最后还有汉诺塔游戏)
  17. VScode 控制台/终端乱码
  18. 从内地或海外前往香港的步骤攻略(2023.2.更新)
  19. 关于计算机专业的调整与优化,Win10这样做优化让你的电脑更流畅
  20. squid配置透明代理并支持Https及http、https拦截

热门文章

  1. 几个手机兼职做任务发布悬赏的app对比
  2. 成绩排名 (20 分)
  3. Android开发工程师如何区分其能力等级(初级,中级,高级)
  4. 3dmax打开错误html,3dmax出现错误解决办法
  5. 金现代入选2022低代码企业50强
  6. mysql 图标图标_MySQL 支持 emoji 图标存储
  7. 建站篇-用户认证系统-替换默认视图
  8. 保密计算机能用旧显示器,旧液晶电视机别扔,可作电脑显示器用
  9. 图像修复方法总结以及深度学习的论文汇总(更新中。。。)
  10. 互联网实验室CISI 2004年度网站总