• PCLVisualizer显示点云的深层用法


    以下代码均是在QT中使用QVTKOpenGLNativeWidget的简单教程以及案例-CSDN博客文章的基础上,修改按钮对应的槽函数中的程序。

    1.显示文件中点云颜色属性信息,利用PointCloudColorHandlerRGBField得到每个点云对应的颜色。

    1. pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>); //创建点云指针
    2. QString fileName = QFileDialog::getOpenFileName(this, "Open PointCloud", ".", "Open PCD files(*.pcd)");
    3. if(fileName == "") return;
    4. pcl::io::loadPCDFile(fileName.toStdString(),*cloud);
    5. pcl::visualization::PointCloudColorHandlerRGBField<pcl::PointXYZRGBA> rgb(cloud);
    6. view->addPointCloud<pcl::PointXYZRGBA>(cloud, "sample cloud");
    7. //view->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 3, "sample cloud"); // 用于改变显示点云的尺寸
    8. view->resetCamera(); //视角
    9. ui->guiwidget->update();

     

    2.自定义点云颜色,利用PointCloudColorHandlerCustom将整个点云进行着色。

    1. pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //创建点云指针
    2. QString fileName = QFileDialog::getOpenFileName(this, "Open PointCloud", ".", "Open PCD files(*.pcd)");
    3. if(fileName == "") return;
    4. pcl::io::loadPCDFile(fileName.toStdString(),*cloud);
    5. pcl::visualization::PointCloudColorHandlerCustom<pcl::PointXYZ> single_color(cloud, 255, 0, 255);
    6. view->addPointCloud<pcl::PointXYZ>(cloud, single_color,"sample cloud"); /添加点云时,可以指定添加到视窗中点云的PointCloudColorHandlerRGB着色处理对象。
    7. view->resetCamera(); //视角
    8. ui->guiwidget->update();

     

    3.用颜色区别深度,利用PointCloudColorHandlerGenericField将不同的深度值显示为不同的颜色,实现以颜色区分深度的目的;PointCloudColorHandlerCustom将点云作为整体并统一着色,PointCloudColorHandlerGenericField将点云按深度值(“x”、“y”、"z"均可)的差异着以不同的颜色。

    1. pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //创建点云指针
    2. QString fileName = QFileDialog::getOpenFileName(this, "Open PointCloud", ".", "Open PCD files(*.pcd)");
    3. if(fileName == "") return;
    4. pcl::io::loadPCDFile(fileName.toStdString(),*cloud);
    5. pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> fildColor(cloud, "y"); // 按照y字段进行渲染
    6. view->addPointCloud<pcl::PointXYZ>(cloud, fildColor,"sample cloud"); //添加点云的时候,指定添加到视窗中点云的PointCloudColorHandlerRGB着色处理对象。
    7. view->resetCamera(); //视角
    8. ui->guiwidget->update();

     

  • 相关阅读:
    【新版】软考 - 系统架构设计师(总结笔记)
    Java21 + SpringBoot3集成easy-captcha实现验证码显示和登录校验
    Skywalking环境搭建及demo实战
    【大数据】HDFS 的常用命令
    基于springboot的信息化药品管理系统
    java 基于 SpringMVC+Mybaties+ easyUI 快递公司管理系统 的 设计与实现
    初步使用openEuler华为欧拉Linux系统
    树莓派之树莓派系统安装
    node切换后没有npm功能
    王道数据结构5(树与二叉树)
  • 原文地址:https://blog.csdn.net/m0_67254672/article/details/133890071