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

    你可能感兴趣的文章
    MongoDB出现Error parsing command line: unrecognised option ‘--fork‘ 的解决方法
    查看>>
    mxGraph改变图形大小重置overlay位置
    查看>>
    MongoDB学习笔记(8)--索引及优化索引
    查看>>
    MQTT工作笔记0009---订阅主题和订阅确认
    查看>>
    ms sql server 2008 sp2更新异常
    查看>>
    MS UC 2013-0-Prepare Tool
    查看>>
    msbuild发布web应用程序
    查看>>
    MSB与LSB
    查看>>
    MSCRM调用外部JS文件
    查看>>
    MSCRM调用外部JS文件
    查看>>
    MSEdgeDriver (Chromium) 不适用于版本 >= 79.0.313 (Canary)
    查看>>
    MsEdgeTTS开源项目使用教程
    查看>>
    msf
    查看>>
    MSSQL数据库查询优化(一)
    查看>>
    MSSQL日期格式转换函数(使用CONVERT)
    查看>>
    MSTP多生成树协议(第二课)
    查看>>
    MSTP是什么?有哪些专有名词?
    查看>>
    Mstsc 远程桌面链接 And 网络映射
    查看>>
    Myeclipse常用快捷键
    查看>>
    MyEclipse用(JDBC)连接SQL出现的问题~
    查看>>