PCL教程-使用CloudViewer类实现简单点云可视化
原文链接:The CloudViewer — Point Cloud Library 0.0 documentation
CloudViewer类
CloudViewer类是一个简单直接,对简单点云进行可视化的类,仅用少量的代码就可实现点云的可视化。
注意:CloudViewer类不能用于多线程应用当中。如果要在多线程中使用可视化,可以使用 PCLVisualizer
简单点云的可视化
如果想在项目中用几行代码可视化点云,可以使用下面的模板:
#include<pcl/visualization/cloud_viewer.h>
void
foo()
{pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud;pcl::visualization::CloudViewer viewer("Simple Cloud Viewer");viewer.showCloud(cloud);while (!viewer.wasStopped()){}
}
完整的案例
代码:
#include<pcl/visualization/cloud_viewer.h>
#include<iostream>
#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>
using namespace std;
void
foo()
{pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud;pcl::visualization::CloudViewer viewer("Simple Cloud Viewer");viewer.showCloud(cloud);while (!viewer.wasStopped()){}
}int user_data;//回调函数,在主函数中注册后只执行一次
void viewerOneOff(pcl::visualization::PCLVisualizer& viewer)
{//设置窗口背景颜色viewer.setBackgroundColor(1.0, 0.5, 1.0);//粉色//添加一个圆球几何体pcl::PointXYZ o;//xyz 为坐标位置o.x = 1.0;o.y = 0;o.z = 0;//添加圆球几何图像viewer.addSphere(o, 0.25, "sphere", 0);cout << "i only run once" << endl;
}
//也是回调函数,在主函数中注册后,每帧显示都执行一次
//具体功能:在可视化对象中添加一个刷新显示的字符串
void viewerPsycho(pcl::visualization::PCLVisualizer& viewer)
{static unsigned count = 0;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++;
}int main()
{//加载点云文件到点云对象pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);pcl::io::loadPCDFile("maize.pcd", *cloud);//创建viewer对象pcl::visualization::CloudViewer viewer("Cloud Viewer");//传入的字符串为窗口的名字//showCloud是同步的,在此处等待直到渲染显示为止viewer.showCloud(cloud);//该注册函数在渲染输出时只调用一次viewer.runOnVisualizationThreadOnce(viewerOneOff);//该注册函数在渲染输出时每次都调用viewer.runOnVisualizationThread(viewerPsycho);while (!viewer.wasStopped()){//在此处可以添加其他处理user_data++;}return 0;
}
该程序的主要功能为可视化了maize.pcd文件中的点云,该点云为一颗植物,同时设置了可视化窗口的一些属性,比如背景和窗口名字等,同时往可视化窗口内条件了一个三维圆球和一行字符串,可以设置它们所在的位置。
显示结果如下:
注意事项:
- 代码中所使用的的pcd文件链接:CloudViewer-maize.pcd_CloudViewer进行可视化的代码-讲义文档类资源-CSDN下载,此pcd文件只有XYZ字段,所以应创建PointXYZ类型的点云,在《点云库PCL从入门到精通》一书中,书中代码与其给出的开源代码并不一致,且其给出的pcd文件格式为XYZ,但无论是书中代码还是源码都写的XYZRGBA格式,可见此书的质量堪忧!书中代码尚未运行验证,读者应谨慎阅读此书!
- 应该使用Cmake编译此代码,并在cmd命令行中运行此程序。本人直接使用VS装载pcl,直接运行此代码会出现库函数缺失等意想不到的情况发生
直接在VS中编写会出错:
应该按照教程:Win10下使用Cmake编译PCL工程文件测试_DayDayUp-CSDN博客
在命令行中运行程序:
PCL教程-使用CloudViewer类实现简单点云可视化相关推荐
- PCL教程-点云滤波之体素滤波器(下采样)
原文链接:Downsampling a PointCloud using a VoxelGrid filter 点云文件下载: table_scene_lms400.pcd 目录 原理 程序代码 PC ...
- [PCL教程] PCL漫游之Filter、Features
目录 1 概述 2 滤波 Filters 2.1 PassThrough 截取点云 2.2 VoxelGrid 降采样 2.3 StatisticalOutlierRemoval去离群点 2.4 Pr ...
- [PCL教程]PCL漫游之Registration,Visualization
目录 9 配准 Registration 9.1 配准基础 9.2 迭代最近点 ICP 9.2 递增地配准点云 9.3 正态分布变换 NDT 9.3.1 基本原理 9.3.2 代码解读 9.4 交互式 ...
- PCL教程-点云配准之成对逐步配准(两两配准)
原文链接:How to incrementally register pairs of cloudshttps://pcl.readthedocs.io/projects/tutorials/en/l ...
- php中des加密cbc模式,php中加密解密DES类的简单使用方法示例
本文实例讲述了php中加密解密DES类的简单使用方法.分享给大家供大家参考,具体如下: 在平时的开发工作中,我们经常会对关键字符进行加密,可能为了安全 也可能为了规范,所以要正确使用DES加密解密 代 ...
- php db类 应用实例,PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
本文实例讲述了PHP封装类似thinkphp连贯操作数据库Db类与简单应用.分享给大家供大家参考,具体如下: header("Content-Type:text/html;charset=u ...
- android远程打电话,Android打电话功能 Android实战教程第三篇之简单实现拨打电话功能...
想了解Android实战教程第三篇之简单实现拨打电话功能的相关内容吗,杨道龙在本文为您仔细讲解Android打电话功能的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:Android拨打电话 ...
- 如何配置Thymeleaf教程,及Thymeleaf的简单使用教程【一篇足够入门】
如何配置Thymeleaf教程,及Thymeleaf的简单使用教程[一篇足够入门] 第一步[进行maven项目的建立(maven的建立前面文章中有提过),建立完之后在pom.xml中进行相关包的导入跟 ...
- PCL教程指南-估计点云法向量
PCL教程指南-Estimating Surface Normals in a PointCloud(估计点云法向量) 官方原文档 点云法向指每个点的法向量,它是基于各点所在邻域范围内估计而出,常用方 ...
- python爬虫入门教程(二):开始一个简单的爬虫
2019/10/28更新 使用Python3,而不再是Python2 转载请注明出处:https://blog.csdn.net/aaronjny/article/details/77945329 爬 ...
最新文章
- java中Array和ArrayList区别 可以将 ArrayList想象成一种会自动扩增容量的Array
- 数据库元数据数据字典查询_6_列出给定表的外键引用
- 深度学习之基于LeNet-5实现cifar10的识别
- 多数公司容易犯的5个大数据错误
- 暴露的全局方法_期末考试快到了,这4种错误的考试复习方法,越复习越差劲!...
- Delphi:第一个hello world程序
- oracle 错误码1438,一次ora-01438错误的处理
- Wolfram Mathematica 13 for Mac(功能广泛的科学计算软件)中文版
- Angular2 小贴士 Name
- 检测相机视野中的物体运动并用Mask显示
- 55本《大数据浪潮之巅:新技术商业制胜之道》,包邮!
- 十大排序算法(动画图解)
- 在win10下,xilinx公司FPGA下载器上,指示灯不亮,设备管理器中驱动显示正常,下载器无法识别到期间
- 【转】和老外聊天、发邮件常用英语缩写
- HDU - 4567 Brilliant Programmers Show 2013长沙邀请赛
- §1 打开百度地图的大门——注册百度地图开发者账户与创建应用
- AM335x Linux调试1--MLO中打印寄存器值
- 谷歌html弹出ie页面,HTML用JS识别浏览器,IE内核则调用谷歌打开指定链接
- Windows配置SSHKey到GItHub
- 痞子衡嵌入式:在i.MXRT1060-EVK上利用memtester程序给SDRAM做压力测试