博客
关于我
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 编译安装 window篇
    查看>>
    mysql 网络目录_联机目录数据库
    查看>>
    MySQL 聚簇索引&&二级索引&&辅助索引
    查看>>
    Mysql 脏页 脏读 脏数据
    查看>>
    mysql 自增id和UUID做主键性能分析,及最优方案
    查看>>
    Mysql 自定义函数
    查看>>
    mysql 行转列 列转行
    查看>>
    Mysql 表分区
    查看>>
    mysql 表的操作
    查看>>
    mysql 视图,视图更新删除
    查看>>
    MySQL 触发器
    查看>>
    mysql 让所有IP访问数据库
    查看>>
    mysql 记录的增删改查
    查看>>
    MySQL 设置数据库的隔离级别
    查看>>
    MySQL 证明为什么用limit时,offset很大会影响性能
    查看>>
    Mysql 语句操作索引SQL语句
    查看>>
    MySQL 误操作后数据恢复(update,delete忘加where条件)
    查看>>
    MySQL 调优/优化的 101 个建议!
    查看>>
    mysql 转义字符用法_MySql 转义字符的使用说明
    查看>>