博客
关于我
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、Redis高频面试题汇总
    查看>>
    MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
    查看>>
    mysql一个字段为空时使用另一个字段排序
    查看>>
    MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
    查看>>
    MYSQL一直显示正在启动
    查看>>
    MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
    查看>>
    MySQL万字总结!超详细!
    查看>>
    Mysql下载以及安装(新手入门,超详细)
    查看>>
    MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
    查看>>
    MySQL不同字符集及排序规则详解:业务场景下的最佳选
    查看>>
    Mysql不同官方版本对比
    查看>>
    MySQL与Informix数据库中的同义表创建:深入解析与比较
    查看>>
    mysql与mem_细说 MySQL 之 MEM_ROOT
    查看>>
    MySQL与Oracle的数据迁移注意事项,另附转换工具链接
    查看>>
    mysql丢失更新问题
    查看>>
    MySQL两千万数据优化&迁移
    查看>>
    MySql中 delimiter 详解
    查看>>
    MYSQL中 find_in_set() 函数用法详解
    查看>>
    MySQL中auto_increment有什么作用?(IT枫斗者)
    查看>>
    MySQL中B+Tree索引原理
    查看>>