博客
关于我
PCL基础4:PCLVisualizer可视化窗口显示
阅读量:488 次
发布时间:2019-03-06

本文共 2131 字,大约阅读时间需要 7 分钟。

1. 简单可视化类

在PCL中实现简单可视化类,通常只需包含必要的头文件,并在程序中直接使用即可。这种方法不支持多线程操作,但对于基础的点云可视化需求,效果良好。

首先,必须包含以下头文件:

#include <pcl/visualization/cloud_viewer.h>

创建一个可视化类实例:

pcl::visualization::CloudViewer viewer("边界提取");

这样创建的可视化窗口名称为“边界提取”。为了让窗口一直显示,可以在编程时添加循环:

或者直接调用:

viewer.spin(0);

注意:PCL 1.1及以上版本推荐使用boost::shared_ptr来管理视窗对象。例如:

boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("边界提取"));

这种方式可以确保智能指针在程序终止时自动释放资源。

2. 多窗口可视化

要在程序中显示两个或多个窗口,可以通过以下步骤实现:

boost::shared_ptr
MView(new pcl::visualization::PCLVisualizer("边界提取"));// 创建两个视口(viewports):int v1 = 0, v2 = 1;MView->createViewPort(0.0, 0.0, 0.5, 1.0, v1); // 第一个视口(ID 为 v1)MView->createViewPort(0.5, 0.0, 1.0, 0.5, v2); // 第二个视口(ID 为 v2)// 为每个视口设置背景颜色MView->setBackgroundColor(0.3, 0.3, 0.3, v1); // 背景颜色为灰色(视口 v1)MView->setBackgroundColor(0.5, 0.5, 0.5, v2); // 背景颜色为中灰色(视口 v2)// 添加文字说明MView->addText("原始点云数据", 10, 10, "v1_text", v1); // 在 v1 视口窗口中添加文字MView->addText("边界点云数据", 80, 80, "v2_text", v2); // 在 v2 视口窗口中添加文字// 添加点云数据到各个视口MView->addPointCloud
(cloud, "原始点云", v1); // 在 v1 视口显示原始点云MView->addPointCloud
(cloud_boundary, "边界点云", v2); // 在 v2 视口显示边界点云// 设置点云的颜色和透明度MView->setPointCloudRenderingProperties(PCL_VISUALIZER_COLOR, 1, 0, 0, "原始点云", v1); // 将点云颜色设置为红色(v1)MView->setPointCloudRenderingProperties(PCL_VISUALIZER_COLOR, 0, 1, 0, "边界点云", v2); // 将点云颜色设置为绿色(v2)// 添加坐标系MView->addCoordinateSystem(1.0); // 添加坐标轴指示MView->initCameraParameters(); // 初始化相机参数// 调整镜头并进行交互操作MView->spin(); // 可以同时使用 spin() 方法实时旋转

所有功能的实现

  • 创建视窗对象:通过 new pcl::visualization::PCLVisualizer("窗口标题") 创建实例,并使用 boost::shared_ptr 管理资源。

  • 创建多个视口:通过调用 createViewPort 方法创建多个子视窗口,提供不同的坐标范围(例如 0.0, 0.0, 0.5, 1.0 代表将视口分成水平两部分)。

  • 设置背景颜色:使用 setBackgroundColor 方法为相应视口设定背景颜色。

  • 添加文字说明:通过 addText 方法在指定的视口中添加文字信息。

  • 添加点云数据:使用 addPointCloud 将点云数据添加到视窗中,可以为每个点云分配一个唯一的标识符。

  • 自定义点云颜色和透明度:通过 setPointCloudRenderingProperties 方法设置点云的颜色、大小和透明度。

  • 添加坐标系:调用 addCoordinateSystem 方法在视窗中显示坐标轴。

  • 初始化相机参数:确保视觉呈现更清晰,通过 initCameraParameters 方法。

  • 控制视窗循环:使用 spin() 方法控制视窗的循环,允许用户进行交互操作。

  • 通过以上方法,可以实现复杂的多视口点云可视化效果。代码的核心在于合理设置视口布局、颜色和交互参数,同时确保视图的清晰和一致性。

    转载地址:http://thmdz.baihongyu.com/

    你可能感兴趣的文章
    MAC M1大数据0-1成神篇-25 hadoop高可用搭建
    查看>>
    mac mysql 进程_Mac平台下启动MySQL到完全终止MySQL----终端八步走
    查看>>
    Mac OS 12.0.1 如何安装柯美287打印机驱动,刷卡打印
    查看>>
    MangoDB4.0版本的安装与配置
    查看>>
    Manjaro 24.1 “Xahea” 发布!具有 KDE Plasma 6.1.5、GNOME 46 和最新的内核增强功能
    查看>>
    mapping文件目录生成修改
    查看>>
    MapReduce程序依赖的jar包
    查看>>
    mariadb multi-source replication(mariadb多主复制)
    查看>>
    MariaDB的简单使用
    查看>>
    MaterialForm对tab页进行隐藏
    查看>>
    Member var and Static var.
    查看>>
    memcached高速缓存学习笔记001---memcached介绍和安装以及基本使用
    查看>>
    memcached高速缓存学习笔记003---利用JAVA程序操作memcached crud操作
    查看>>
    Memcached:Node.js 高性能缓存解决方案
    查看>>
    memcache、redis原理对比
    查看>>
    memset初始化高维数组为-1/0
    查看>>
    Metasploit CGI网关接口渗透测试实战
    查看>>
    Metasploit Web服务器渗透测试实战
    查看>>
    MFC模态对话框和非模态对话框
    查看>>
    Moment.js常见用法总结
    查看>>