【精选】PCL学习总结

您所在的位置:网站首页 pcl设置 【精选】PCL学习总结

【精选】PCL学习总结

2023-10-18 20:31| 来源: 网络整理| 查看: 265

目录

 设置背景颜色setBackgroundColor

显示点云自带的颜色信息(PointCloudColorHandlerRGBField)

 根据点云的某个字段进行上色(PointCloudColorHandlerGenericField)

 自定义单一颜色(PointCloudColorHandlerCustom)

随机上色(PointCloudColorHandlerRandom)

在使用PCLVisualizer进行点云显示的过程中,经常需要给点云上色,以区分不同类型的点云,经常用到的上色方法有:

1. 显示点云自带的颜色信息; 2. 根据点云的某个属性(字段)进行上色(例如:X,Y,Z等方向上不同颜色); 3. 自定义单一颜色(给某个点云显示同一个颜色); 4. 随机上色(由编译器随机给点云分配单一颜色);

 设置背景颜色setBackgroundColor

背景颜色的rgb 的取值范围是 [0, 1] 而不是 [0, 255]

所以如果要设置背景颜色为指定rgb数值,需要除以255:

viewer->setBackgroundColor(double(bgColor.red()) / 255, double(bgColor.green()) / 255, double(bgColor.blue()) / 255);

设置rgb为(125,100,200)的背景颜色需按照如下方式:

viewer->setBackgroundColor(125 / 255, 100 / 255, 200 / 255);

显示点云自带的颜色信息(PointCloudColorHandlerRGBField) boost::shared_ptr colorHandler(pcl::PointCloud::Ptr cloud) { boost::shared_ptr viewer(new pcl::visualization::PCLVisualizer("3D Cloud")); pcl::visualization::PointCloudColorHandlerRGBField rgb(cloud); viewer->addPointCloud(cloud, rgb, "sample cloud"); return viewer; }

这里用到了一个类 “PointCloudColorHandlerRGBField” 实际上用这种方法显示点云的自带颜色信息,感觉有点多此一举。可以直接 “viewer->addPointCloud(cloud, “sample cloud”);” 就能实现上述功能。

 根据点云的某个字段进行上色(PointCloudColorHandlerGenericField) boost::shared_ptr genericHandler(pcl::PointCloud::Ptr cloud) { boost::shared_ptr viewer(new pcl::visualization::PCLVisualizer("3D Cloud")); pcl::visualization::PointCloudColorHandlerGenericField rgb(cloud, "y"); viewer->addPointCloud(cloud, rgb, "sample cloud"); return viewer; }

常用的字段有:

xyznormal_x (X方向上的法线)normal_y (Y方向上的法线)normal_z (Z方向上的法线)rgb (颜色)curvature (曲率)  自定义单一颜色(PointCloudColorHandlerCustom) boost::shared_ptr customHandler(pcl::PointCloud::Ptr cloud) { boost::shared_ptr viewer(new pcl::visualization::PCLVisualizer); pcl::visualization::PointCloudColorHandlerCustom rgb(cloud, 0, 255, 255); viewer->addPointCloud(cloud, rgb, "sample cloud"); return viewer; }

这个类的功能就是为同一个点云中的点赋予相同的颜色,用于区分同一个窗口中的不同点云。值得注意的是,其中 rgb 的取值范围不是 [0, 1] 而是 [0, 255], 不然出来的点云是黑色的。

随机上色(PointCloudColorHandlerRandom) boost::shared_ptr randomHandler(pcl::PointCloud::Ptr cloud) { boost::shared_ptr viewer(new pcl::visualization::PCLVisualizer); pcl::visualization::PointCloudColorHandlerRandom rgb(cloud); viewer->addPointCloud(cloud, rgb, "sample cloud"); return viewer; }

系统随机选择单一颜色进行上色。

参考链接:PCL库学习笔记(为点云上色的几种方法详解)_SGL_LGS的博客-CSDN博客近段时间在学习PCL库,在点云上色的问题中进行了一个小总结。分别实现了一下几个功能:1. 显示点云自带的颜色信息;2. 根据点云的某个属性进行上色(例如:X,Y,Z等方向上不同颜色);3. 自定义单一颜色(给某个点云显示同一个颜色);4. 随机上色(由编译器随机给点云分配单一颜色);5. 显示点云的法线方向和法向量;下文会分别介绍上述功能的实现,并提供代码示例:1、显示点云自带的颜色信息(PointCloudColorHandlerRGBField)boost::shared_ptr



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3