PCL 点云随机渲染颜色

news2024/9/22 10:07:48

目录

一、概述

1.1原理

1.2实现步骤

1.3 应用场景

二、代码实现

2.1关键函数

2.2完整代码

三、实现效果


PCL点云算法汇总及实战案例汇总的目录地址链接:

PCL点云算法与项目实战案例汇总(长期更新)


一、概述

        本文将介绍如何使用PCL库为点云中的每个点随机渲染颜色,并在PCL的可视化窗口中显示。这种方法适用于需要对点云中的不同点进行颜色区分的场景,可以帮助更直观地观察和分析点云数据。

1.1原理

        在点云处理中,颜色渲染是为了增强可视化效果,使不同的点在视觉上更易于区分。通过为点云中的每个点分配随机颜色,可以在可视化窗口中展示一个色彩丰富的点云模型。PCL提供了 pcl::PointXYZRGB 数据类型,该类型可以存储点的三维坐标和颜色信息。通过遍历点云中的每个点,并为每个点分配随机的RGB值,即可实现随机颜色渲染。

1.2实现步骤

  1. 加载点云数据,并将其转换为 pcl::PointCloud 类型。
  2. 遍历点云中的每个点,为其分配随机的RGB颜色值。
  3. 使用PCL可视化工具显示随机颜色渲染后的点云数据。

1.3 应用场景

  1. 可视化效果增强:通过随机颜色渲染,可以提高点云数据的可视化效果,使点云模型更加生动和易于观察。
  2. 数据分析与调试:在数据分析和调试过程中,随机颜色渲染可以帮助快速识别和区分点云中的不同部分。
  3. 三维模型展示:在三维模型展示中,随机颜色渲染可以增加模型的美观性和可读性,特别是在复杂模型中突出显示不同的点。

二、代码实现

2.1关键函数

1.颜色渲染与分配:
        -pcl::PointCloud<pcl::PointXYZRGB>:用于存储带有颜色信息的点云数据。
        -rand():生成随机数,用于生成随机的RGB颜色值。
2.点云数据加载与可视化:
        -pcl::io::loadPCDFile:用于加载PCD格式的点云文件。
        -pcl::visualization::PCLVisualizer:创建一个可视化窗口,并显示点云数据。

2.2完整代码

#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <cstdlib>  // 包含rand()函数的头文件

int main(int argc, char** argv)
{
    // 1. 创建PointCloud对象,用于存储带有颜色信息的点云数据
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);

    // 2. 读取点云数据
    pcl::PointCloud<pcl::PointXYZ>::Ptr inputCloud(new pcl::PointCloud<pcl::PointXYZ>);
    if (pcl::io::loadPCDFile("input.pcd", *inputCloud) == -1)  // 加载点云文件
    {
        PCL_ERROR("Couldn't read file input.pcd \n");
        return -1;
    }

    // 3. 将原始点云转换为带有颜色信息的点云
    cloud->width = inputCloud->width;
    cloud->height = inputCloud->height;
    cloud->is_dense = inputCloud->is_dense;
    cloud->points.resize(cloud->width * cloud->height);

    for (size_t i = 0; i < inputCloud->points.size(); ++i)
    {
        cloud->points[i].x = inputCloud->points[i].x;
        cloud->points[i].y = inputCloud->points[i].y;
        cloud->points[i].z = inputCloud->points[i].z;

        // 生成随机颜色
        cloud->points[i].r = rand() % 256;  // 随机生成0-255之间的红色分量
        cloud->points[i].g = rand() % 256;  // 随机生成0-255之间的绿色分量
        cloud->points[i].b = rand() % 256;  // 随机生成0-255之间的蓝色分量
    }

    // 4. 创建PCLVisualizer对象,用于显示点云数据
    pcl::visualization::PCLVisualizer::Ptr viewer(new pcl::visualization::PCLVisualizer("3D Viewer"));
    viewer->setBackgroundColor(0, 0, 0);  // 设置背景颜色为黑色
    viewer->addPointCloud<pcl::PointXYZRGB>(cloud, "random colored cloud");  // 添加带有随机颜色的点云
    viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_POINT_SIZE, 1, "random colored cloud");  // 设置点的大小

    // 5. 启动可视化主循环
    while (!viewer->wasStopped())
    {
        viewer->spinOnce(100);  // 让可视化窗口刷新
    }

    return 0;
}

三、实现效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2139339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PMP–一、二、三模–分类–14.敏捷–技巧–项目生命周期

文章目录 技巧项目生命周期 一模14.敏捷--项目生命周期--原型法--迭代型生命周期&#xff0c;通过连续的原型或概念验证来改进产品或成果。每个新的原型都能带来新的干系人新的反馈和团队见解。题目中明确提到需要反馈&#xff0c;因此原型法比较好用。23、 [单选] 一个敏捷团队…

DAY13信息打点-Web 应用源码泄漏开源闭源指纹识别GITSVNDS备份

#知识点 0、Web架构资产-平台指纹识别 1、开源-CMS指纹识别源码获取方式 2、闭源-习惯&配置&特性等获取方式 3、闭源-托管资产平台资源搜索监控 演示案例&#xff1a; ➢后端-开源-指纹识别-源码下载 ➢后端-闭源-配置不当-源码泄漏 ➢后端-方向-资源码云-源码泄漏 …

Linux下的简单TCP客户端和服务器

客户端 #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h>int main() {struct sockaddr_in* caddr(struct sockaddr_in*)malloc(sizeof(struct sockaddr…

【JavaEE】IO基础知识及代码演示

目录 一、File 1.1 观察get系列特点差异 1.2 创建文件 1.3.1 delete()删除文件 1.3.2 deleteOnExit()删除文件 1.4 mkdir 与 mkdirs的区别 1.5 文件重命名 二、文件内容的读写----数据流 1.1 InputStream 1.1.1 使用 read() 读取文件 1.2 OutputStream 1.3 代码演示…

【有啥问啥】自动提示词工程(Automatic Prompt Engineering, APE):深入解析与技术应用

自动提示词工程&#xff08;Automatic Prompt Engineering, APE&#xff09;&#xff1a;深入解析与技术应用 引言 随着大语言模型&#xff08;LLM&#xff09;如 GPT、BERT 等的快速发展&#xff0c;如何高效地与这些模型进行互动成为了重要的研究方向之一。提示词&#xff…

阿里P8和P9级别有何要求

阿里巴巴的P8和P9级别&#xff0c;代表着公司的资深技术专家或管理者岗位&#xff0c;要求候选人具有丰富的职业经历、深厚的技术能力以及出色的领导力。以下是对P8和P9级别的要求、考察点以及准备建议的详细分析。 P8 级别要求 1. 职业经历&#xff1a; 8年以上的工作经验&a…

PCIe进阶之TL:Common Packet Header Fields TLPs with Data Payloads Rules

1 Transaction Layer Protocol - Packet Definition TLP有四种事务类型:Memory、I/O、Configuration 和 Messages,两种地址格式:32bit 和 64bit。 构成 TLP 时,所有标记为 Reserved 的字段(有时缩写为 R)都必须全为0。接收者Rx必须忽略此字段中的值,PCIe Switch 必须对…

响应式网站的网站建设,需要注意什么?

响应式网站建设需要注意多个方面&#xff0c;以确保网站能够在各种设备和屏幕尺寸上提供一致且良好的用户体验。下面详细介绍响应式网站建设的注意事项&#xff1a; 响应式网站的网站建设&#xff0c;需要注意什么? 考虑多终端适配 设计样式&#xff1a;在设计响应式网站时&…

豆包MarsCode | 一款智能编程助手开发工具

豆包MarsCode | 一款智能编程助手开发工具 豆包MarsCode 是基于豆包大模型的智能开发工具&#xff0c;提供 Cloud IDE 和 AI 编程助手&#xff0c;支持代码补全、智能问答、代码解释与修复&#xff0c;兼容主流编程工具与 100 种编程语言&#xff0c;助力编程更智能便捷 豆包 M…

InterPro蛋白质结构域数据下载

前言 偶然发现InterPro数据库挺不错的。 之前使用selenium爬取了AlphaFlod数据&#xff0c;于是也想试试把InterPro的结构域数据爬取一下。 结果发现官方已经给好了代码&#xff0c;真是太善解人意了。 当然&#xff0c;想要批量下载还需要魔改一下官方代码。 步骤一&#…

【初阶数据结构】排序

目录 一、排序的概念及其运用 1.1排序的概念 1.2常见的排序算法 二、常见排序算法的实现 2 .1插入排序 2 .1.1基本思想&#xff1a; 2.1.2直接插入排序&#xff1a; 算法复杂度&#xff1a; 最坏情况&#xff1a; 最好的情况&#xff1a; 直接插入排序的特性总结&…

思维商业篇(2)—业务第一性

思维商业篇(2)—业务第一性 前言 第一性原理是超过因果律的第一因&#xff0c;且是唯一因。 第一性原理是事物唯一的源头&#xff0c;是抽象。是看透事物的本质&#xff0c;要把事物分解成最基本的组成&#xff0c;从源头上去解决问题。 对于一个企业来说&#xff0c;第一性…

01,大数据总结,zookeeper

1 &#xff0c;zookeeper &#xff1a;概述 1.1&#xff0c;zookeeper&#xff1a;作用 1 &#xff0c;大数据领域 &#xff1a;存储配置数据   例如&#xff1a;hadoop 的 ha 配置信息&#xff0c;hbase 的配置信息&#xff0c;都存储在 zookeeper 2 &#xff0c;应用领…

PXE服务

一.PXE服务的功能介绍 1.无盘启动&#xff1a;PXE允许计算机在没有本地存储设备的情况下启动操作系统。这对于构建无盘工作站非常有用&#xff0c;因为计算机可以直接从网络加载操作系统和其他应用程序1。 2.远程安装操作系统&#xff1a;PXE技术可以用于远程安装操作系统&…

C++11的部分新特性

目录 1.列表初始化 1.1 { } 初始化 1.2 std::initializer_list 2.声明 2.1 auto 2.2 decltype 2.3 nullptr 3. 范围for 4.STL中的一些变化 5.右值引用与移动语义 5.1 左值引用与右值引用 5.2 左值引用与右值引用的比较 5.3 右值引用使用场景 5.4 完美转发 6.新的…

操作系统week2

操作系统学习 二.处理机管理 19.生产者-消费者问题 问题&#xff1a; 代码&#xff1a; 20.多生产者-多消费者问题 实现&#xff1a; 21.吸烟者问题(单生产者-多消费者) 问题&#xff1a; 实现&#xff1a; 22.读者-写者问题 问题&#xff1a; 读优先的代码&…

CentOS7更换阿里云yum更新源

目前CentOS内置的更新安装源经常报错无法更新&#xff0c;或者速度不够理想&#xff0c;这个时候更换国内的镜像源就是一个不错的选择。 备份内置更新源 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载阿里云repo源&#xff08;需要系统…

Cubieboard2(三) 系统构建 —— WSL Ubuntu 中挂载 U 盘(SDCard)

文章目录 1 WSL Ubuntu 中挂载 U 盘(SDCard)2 usbipd 搭建虚拟机与宿主机 USB 通信桥梁3 WSL 内核添加 USB 设备驱动3.1 编译 WSL Linux 内核3.2 挂载 USB(SDCard) 设备 附录&#xff1a;WSL 操作命令附录&#xff1a;git 仓库检出 1 WSL Ubuntu 中挂载 U 盘(SDCard) Linux 驱动…

使用OpenFeign在不同微服务之间传递用户信息时失败

文章目录 起因原因解决方法&#xff1a; 起因 从pay-service中实现下单时&#xff0c;会调用到user-service中的扣减余额。 因此这里需要在不同微服务之间传递用户信息。 但是user-service中始终从始至终拿不到user的信息。 原因 在pay-service中&#xff0c;不仅要Enable O…

YOLO学习笔记 | YOLO目标检测算法(YOLO-V2)

github&#xff1a;https://github.com/MichaelBeechan CSDN&#xff1a;https://blog.csdn.net/u011344545 YOLO-V2 V1与V2区别Batch Normalization更大分辨率YOLO-V2网络结构 V1与V2区别 V2更强更快 Batch Normalization 更大分辨率 YOLO-V2网络结构