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();
相关推荐
天若有情6731 天前
程序员原创|借鉴JS事件冒泡,根治电脑文件混乱的“冒泡整理法”
开发语言·javascript·windows·ecmascript·电脑·办公·日常
特种加菲猫1 天前
继承,一场跨越时空的对话
开发语言·c++
玩转单片机与嵌入式1 天前
玩转边缘AI(TInyML):需要掌握的C++知识汇总!
开发语言·c++·人工智能
茉莉玫瑰花茶1 天前
Qt 信号与槽 [ 1 ]
开发语言·数据库·qt
AI人工智能+电脑小能手1 天前
【大白话说Java面试题】【Java基础篇】第30题:JDK动态代理和CGLIB动态代理有什么区别
java·开发语言·后端·面试·代理模式
张健11564096481 天前
临界区和同一线程上锁
java·开发语言·jvm
头发够用的程序员1 天前
C++和Python面试经典算法汇总(一)
开发语言·c++·python·算法·容器·面试
夜猫逐梦1 天前
【逆向经验】一篇文章讲透为什么CE搜不到Python游戏的内存值
开发语言·python·游戏
SilentSamsara1 天前
闭包的本质:Python 如何捕获自由变量
开发语言·python·青少年编程·pycharm