pcl 点云可视化

简介: pcl 点云可视化

PCL中的pcl_visualization库提供了可视化相关的数据结构和组件,包含27个类以及十多个函数,主要是为了将其它模块的算法处理后的结果直观的展现。

简单点云可视化

点云视窗类 CloudViewer 是简单显示点云的可视化工具类,可以让用户尽可能少的代码 查看 点云。
CloudViewer类不能在多线程应用程序中使用

下面介绍其实现方法

Code

#include <pcl/visualization/cloud_viewer.h>
#include <iostream>
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>

需要包含的头文件

==============================================================

    //声明一个点云 指针
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
    //从PCD 中 读取点云
    pcl::io::loadPCDFile ("../maize.pcd", *cloud);

声明一个点云 指针 ;从PCD 中 读取点云

==============================================================

    /* 创建显示 类 实例 */
    pcl::visualization::CloudViewer viewer("Cloud Viewer"); 

    /* 显示点云 */
    viewer.showCloud(cloud);

创建pcl 点云 显示 类 实例
显示点云

==============================================================


     /* 回调函数执行一次   */
    viewer.runOnVisualizationThreadOnce (viewerOneOff);

回调函数执行一次

==============================================================

     /* 回调函数 显示每刷新一帧 执行一次 */
    viewer.runOnVisualizationThread (viewerPsycho);

回调函数 显示每刷新一帧 执行一次

==============================================================

   /*持续显示*/
    while (!viewer.wasStopped ())
    {
    }

==============================================================

void viewerOneOff (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" << std::endl;
    
}

仅执行一次的回调 函数
在一个点 添加 一个 球体

==============================================================

    
void viewerPsycho (pcl::visualization::PCLVisualizer& viewer)
{
    /*记录 刷新 次数*/
    static unsigned count = 0;

    //生成 刷新 次数 语句的字符串
    std::stringstream ss;
    ss << "Once per viewer loop: " << count++;
     
     //除去 text 的id  否则会重复  打印 不出来
    viewer.removeShape ("text", 0);

    // 将变换的字符添加上去
    viewer.addText (ss.str(), 200, 300, "text", 0);

}

回调函数 显示每刷新一帧 执行一次

添加一个 数值 一直 增加 的 字符 串

==============================================================

Result

在这里插入图片描述
可以看到一个球体 , 一个变化的字符串 和一个点云。

相关文章
|
算法
【计算机组成原理】(四)原码补码的加减乘除
各种码的作用: 模运算的性质:
653 0
|
存储 算法 定位技术
PCL--点云配准--ICP使用
PCL--点云配准--ICP使用
PCL--点云配准--ICP使用
|
算法 数据可视化 定位技术
基于PCL库的通过ICP匹配多幅点云方法
基于PCL库的通过ICP匹配多幅点云方法
基于PCL库的通过ICP匹配多幅点云方法
|
编解码 监控 网络协议
如何使用FFmpeg实现RTSP推送H.264和H.265(HEVC)编码视频
本文详细介绍了如何使用FFmpeg实现RTSP推送H.264和H.265(HEVC)编码视频。内容涵盖环境搭建、编码配置、服务器端与客户端实现等方面,适合视频监控系统和直播平台等应用场景。通过具体命令和示例代码,帮助读者快速上手并实现目标。
3280 6
|
Kubernetes 测试技术 持续交付
C# 一分钟浅谈:集成测试与系统测试
【10月更文挑战第19天】本文详细介绍了集成测试和系统测试的概念、目的及其在软件开发中的重要性。通过分析常见问题和易错点,结合代码示例,探讨了如何通过代码规范、自动化测试和持续集成等方法提高测试效果,确保软件质量和可靠性。
642 1
|
传感器 机器学习/深度学习 算法
Isaac Sim教程01 Isaac Sim介绍
这篇文章是Isaac Sim的入门教程,介绍了NVIDIA Omniverse平台上的Isaac Sim机器人仿真工具包。内容包括Isaac Sim的背景、特点、应用场景、架构和工作流程,以及近期的更新情况。Isaac Sim支持物理精确的仿真和合成数据集的创建,与ROS/ROS2兼容,并能模拟多种传感器数据,适用于机器人导航、操作应用、计算机视觉研究和数据集生成等多种场景。
2187 2
Isaac Sim教程01 Isaac Sim介绍
关于QtCreator使用fcitx无法输入中文的解决方法(从根本解决问题)
关于QtCreator使用fcitx无法输入中文的解决方法(从根本解决问题)
|
机器学习/深度学习 数据采集 数据挖掘
Python实现循环神经网络RNN-LSTM回归模型项目实战(股票价格预测)
Python实现循环神经网络RNN-LSTM回归模型项目实战(股票价格预测)
|
缓存 数据库连接 数据库
构建高性能的Python Web应用:优化技巧与最佳实践
本文探讨了如何通过优化技巧和最佳实践来构建高性能的Python Web应用。从代码优化到服务器配置,我们将深入研究提高Python Web应用性能的各个方面。通过本文,读者将了解到一系列提高Python Web应用性能的方法,从而更好地应对高并发和大流量的挑战。
VS2019配置pcl1.12.0点云环境
VS2019配置pcl1.12.0点云环境
864 0