博客
关于我
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/

    你可能感兴趣的文章
    Mysql 拼接多个字段作为查询条件查询方法
    查看>>
    mysql 排序id_mysql如何按特定id排序
    查看>>
    Mysql 提示:Communication link failure
    查看>>
    mysql 插入是否成功_PDO mysql:如何知道插入是否成功
    查看>>
    Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
    查看>>
    mysql 数据库备份及ibdata1的瘦身
    查看>>
    MySQL 数据库备份种类以及常用备份工具汇总
    查看>>
    mysql 数据库存储引擎怎么选择?快来看看性能测试吧
    查看>>
    MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
    查看>>
    MySQL 数据库的高可用性分析
    查看>>
    MySQL 数据库设计总结
    查看>>
    Mysql 数据库重置ID排序
    查看>>
    Mysql 数据类型一日期
    查看>>
    MySQL 数据类型和属性
    查看>>
    mysql 敲错命令 想取消怎么办?
    查看>>
    Mysql 整形列的字节与存储范围
    查看>>
    mysql 断电数据损坏,无法启动
    查看>>
    MySQL 日期时间类型的选择
    查看>>
    Mysql 时间操作(当天,昨天,7天,30天,半年,全年,季度)
    查看>>
    MySQL 是如何加锁的?
    查看>>