PCLVisualizer显示点云的深层用法

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

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

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

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

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

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

复制代码
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);   //创建点云指针
    QString fileName = QFileDialog::getOpenFileName(this, "Open PointCloud", ".", "Open PCD files(*.pcd)");
    if(fileName == "") return;
    pcl::io::loadPCDFile(fileName.toStdString(),*cloud);
    pcl::visualization::PointCloudColorHandlerGenericField<pcl::PointXYZ> fildColor(cloud, "y"); // 按照y字段进行渲染
    view->addPointCloud<pcl::PointXYZ>(cloud, fildColor,"sample cloud");  //添加点云的时候,指定添加到视窗中点云的PointCloudColorHandlerRGB着色处理对象。
    view->resetCamera();    //视角
    ui->guiwidget->update();
相关推荐
“AI国潮设计-小江”6 小时前
【SDXL实战】用AI生成“财神爷蛋糕×英歌舞人物”潮汕国潮甜品IP,附Prompt与批量生成思路
开发语言·人工智能·python·aigc
繁华的地方不一定留下你的脚印6 小时前
C++线程如何安全停止与唤醒:std::jthread、stop_token与condition_variable
开发语言·c++
caoerzhong6 小时前
跨境海外仓怎么管:JeeWMS 开源 Java 仓库管理系统打通头程、海外仓与尾程
java·开发语言·开源
码云数智-大飞6 小时前
新手写 Python 代码,如何规范命名、减少 Bug
开发语言·python·php
福兮说7 小时前
JS 正则的六个坑:带 g 的 test() 一真一假、空匹配死循环、replace 里的 $
开发语言·前端·javascript·正则表达式
码艺-Alimjan7 小时前
Web 网站打包桌面应用的另一种方式,超级简单(C# exe 33Kb)
开发语言·前端·c#
沫璃染墨7 小时前
《从零入门Linux系统篇(五十一):线程篇·四——pthread线程库详解:从线程创建到终止与分离》
linux·运维·服务器·开发语言·c++·系统架构·线程
物极必反10247 小时前
QT使用FFMpeg编译安卓程序.md
qt·ffmpeg·安卓
yexianglunbai7 小时前
中间件(Middleware)详解:概念、作用与实战
java·开发语言·中间件
叶总没有会7 小时前
OpenFeign
java·开发语言·springcloud·openfeign