PCL库实现点云可视化

一、 算法原理

点云可视化,即在窗口中渲染点云,通过调整颜色、大小、法线等属性,可直观呈现不同维度的信息。下文先梳理常用可视化参数,再给出具体示例。

二、 参数说明

PCL 点云可视化的核心操作都围绕 pcl::visualization::PCLVisualizer 类展开,我们先梳理核心常用函数的调用方法与作用:

核心对象创建

// 创建可视化窗口智能指针
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer (new pcl::visualization::PCLVisualizer ("窗口标题"));

点云添加与基础属性设置

添加点云到窗口:

// 添加点云到可视化器,第二个参数为点云的唯一ID,多个点云需要设置不同ID
viewer->addPointCloud<pcl::PointXYZ>(cloud, "cloud_id");

修改点云渲染属性的统一接口:setPointCloudRenderingProperties,通过第一个参数指定要修改的属性类型,常用调用如下:

  1. 设置点大小
// 参数说明:属性类型 -> 点大小值 -> 目标点云ID
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 2, "cloud");
  1. 设置点云颜色(全局统一颜色,RGB通道取值范围0~1)
// 示例:将点云设置为红色
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 1.0, 0.0, 0.0, "cloud");
// 示例:将点云设置为白色
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 1.0, 1.0, 1.0, "cloud");
  1. 设置点云不透明度
// alpha 取值范围0~1,0为完全透明,1为完全不透明
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_OPACITY, 0.8, "cloud");

辅助元素添加

  1. 添加坐标系坐标轴
// 参数:坐标轴的长度(单位和点云尺度一致)
viewer->addCoordinateSystem (1.0);
  1. 显示点云法线
// 参数:带法线的点云指针 -> 采样步长(每隔多少个点显示一个法线) -> 法线长度 -> 法线ID
viewer->addPointCloudNormals<pcl::PointNormal> (cloud_with_normals, 10, 0.05, "normals");
  1. 设置背景色
// RGB取值范围0~1,此处为深灰色背景
viewer->setBackgroundColor (0.05, 0.05, 0.05);

主循环刷新

需要开启循环不断刷新窗口,才能保持可视化窗口响应交互:

// 循环直到窗口被关闭,每10ms刷新一次
while (!viewer->wasStopped ()) {
  viewer->spinOnce (10);
}

整体的实现逻辑为:创建可视化对象 -> 读取点云 -> 预处理点云(如上色、降采样) -> 添加点云与辅助元素 -> 设置渲染属性 -> 进入刷新循环等待用户关闭。

posted @ 2026-03-10 23:26  图图的点云库  阅读(2)  评论(0)    收藏  举报