利用C++实现PCL点云可视化:示例程序及解析(持续更新)

news2024/9/29 8:59:25

  【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。   

参考书籍:《人工智能点云处理及深度学习算法》

 本文为专栏《Python三维点云实战宝典》系列文章,专栏介绍地址“【python三维深度学习】python三维点云从基础到深度学习_python3d点云从基础到深度学习-CSDN博客”。配套书籍《人工智能点云处理及深度学习算法》提供更加全面和系统的解析。

        随着三维数据处理的兴起,点云技术在各个领域中得到了广泛应用。Point Cloud Library(PCL)作为一个强大的开源库,提供了丰富的点云处理工具和算法,同时也支持点云的可视化功能。本文将展示如何使用 C++ 结合 PCL 库来实现简单的点云可视化,并提供一个基本的示例程序框架。

1 基本示例程序

        1.1 示例程序

        示例点云rabbit.pcd下载地址为https://download.csdn.net/download/suiyingy/85129456。

/*
更多python与C++技巧、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。
*/
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/point_cloud.h>
#include <pcl/visualization/cloud_viewer.h>

int main (int argc, char** argv)
{
  // 读取.pcd文件
  pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
  if (pcl::io::loadPCDFile<pcl::PointXYZ> ("../../rabbit.pcd", *cloud) == -1) //* 读入PCD文件
  {
    PCL_ERROR ("Couldn't read file example_cloud.pcd \n");
    return (-1);
  }
  std::cout << "Loaded "
            << cloud->width * cloud->height
            << " data points from rabbit.pcd with the following fields. "
            << std::endl;

   // 创建可视化对象
    pcl::visualization::CloudViewer viewer("Simple Cloud Viewer");

    // 显示点云
    viewer.showCloud(cloud);

    // 等待直到窗口关闭
    while (!viewer.wasStopped())
    {
    }

  return 0;
}

        1.2 运行结果

2 法向量显示

// 可视化点云和法向量
boost::shared_ptr<pcl::visualization::PCLVisualizer> viewer(new pcl::visualization::PCLVisualizer("Point Cloud Viewer"));
viewer->setBackgroundColor(0, 0, 0);
viewer->addPointCloud<pcl::PointXYZ>(cloud, "point_cloud");

// 设置法向量可视化参数
viewer->addPointCloudNormals<pcl::PointXYZ, pcl::Normal>(cloud, cloud_normals, 10, 0.8, "normals"); // 第4个参数是每个法向量的间隔,第5个参数是法向量的长度比例因子
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_LINE_WIDTH, 3, "normals");
viewer->setPointCloudRenderingProperties(pcl::visualization::PCL_VISUALIZER_COLOR, 1.0, 0.0, 0.0, "normals"); // 设置法向量颜色为红色

        在 addPointCloudNormals 方法中,第五个参数是法向量的长度比例因子。您可以调整这个值来增加或减少法向量箭头的长度。在这个示例中,我们将其设置为 0.8,这意味着法向量的长度将与其实际大小成比例,但是缩小了 0.8 倍以便更好地在可视化中展示。您可以根据需要调整这个值来获得适合您数据的法向量长度。  

3 持续更新更多细节

        本文将持续更新与补充。

【版权声明】
本文为博主原创文章,未经博主允许严禁转载,我们会定期进行侵权检索。  

更多python与C++技巧、计算机视觉基础到实践完整指南、三维算法、深度学习算法总结、大模型请关注我的博客,欢迎讨论与交流:https://blog.csdn.net/suiyingy,或”乐乐感知学堂“公众号。Python三维领域专业书籍推荐:《人工智能点云处理及深度学习算法》。

本文为专栏《Python三维点云实战宝典》系列文章,专栏介绍地址“【python三维深度学习】python三维点云从基础到深度学习_python3d点云从基础到深度学习-CSDN博客”。配套书籍《人工智能点云处理及深度学习算法》提供更加全面和系统的解析。

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

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

相关文章

HTML <template> 标签的基本技巧

前言 HTML中的<template>标记是 Web 开发中一个功能强大但经常未得到充分利用的元素。它允许你定义可重复使用的内容&#xff0c;这些内容可以克隆并插入 DOM 中而无需最初渲染。 此功能对于创建动态、交互式 Web 应用程序特别有用。 在本文中&#xff0c;我们将探讨有…

二极管、电阻、电容、电感的种类及作用

系列文章目录 文章目录 系列文章目录前言二极管的种类二极管的作用电容的种类电容的作用电阻的作用电感的作用 前言 参考&#xff1a;这个UP的视频&#xff1a;8位和32位单片机最本质区别&#xff0c;2分钟看懂&#xff01; 二极管的种类 1.恒流二极管&#xff1a;可以用在恒…

微积分复习笔记 Calculus Volume 1 - 1.2 Basic Classes of Functions

1.2 Basic Classes of Functions - Calculus Volume 1 | OpenStax

NetApp AFF A 全闪存系列,专为 AI 时代打造的统一数据存储

NetApp AFF A 系列系统可轻松为要求最苛刻的工作负载提供动力支持&#xff0c;从当前运行业务的任务关键型应用程序到未来将释放创新潜能和工作效率的 AI 和 GenAI 工作负载。凭借 GenAI 和其他现代企业业务负载所迫切需要的高级数据管理能力、行业领先的勒索软件防范技术和云集…

antd vue switch组件怎么把值true、false改为uint32类型的1和0

背景 已知switch组件的checked属性默认是传入true 和 false的&#xff0c;但是有这样的业务情景&#xff0c;既需要使用的是开关&#xff0c;又需要传入的是整数&#xff0c;那么我们应该如何修改呢&#xff1f; 解决方案 <a-form-item label"允许失败时保存"&…

视频压缩怎么操作?三个办法教你无损压缩视频

随着假期的结束&#xff0c;很多同学和朋友们开始整理自己在假期期间拍摄的各种视频&#xff0c;准备分享到社交媒体或是保存到自己的移动设备上。 然而&#xff0c;面对高清甚至4K视频的大文件体积&#xff0c;不少人都会遇到存储空间不足的问题。这时候&#xff0c;一个好的…

完全二叉树的表示转换:从邻接链表到邻接矩阵

完全二叉树的表示转换:从邻接链表到邻接矩阵 摘要一、引言二、完全二叉树的特点三、邻接链表到邻接矩阵的转换四、C代码实现五、结果分析六、结论摘要 在数据结构中,树是一种重要的非线性数据结构,用于表示具有层次关系的数据。树的表示方法主要有两种:邻接链表和邻接矩阵…

vscode +STM32 VS CODE EXTENSION

stm32 vs code extersion 1.0.0版本可以直接导入cubeide的工程&#xff0c;之后版本不可以&#xff0c;所以为了省事&#xff0c;使用stm32 vs code extersion 1.0.0插件。 安装完stm32 vs code extersion插件&#xff0c;会默认把相关插件一起安装。但是需要手动安装Ninja&am…

使用实例:xxl-job应用在spring cloud微服务下

1、首先下载&#xff0c;从github上下载&#xff0c;选择zip然后直接解压 https://github.com/xuxueli/xxl-job/releases 2、解压完后用idea启动。 启动这个启动类&#xff0c;然后按照路径访问 http://localhost:8080/xxl-job-admin/ 3、在你的项目里编写一个单独的微服务&a…

国内外大模型汇总(包括科大星火、文心一言、通义千问、智普清言、华为大模型)

国内外大模型汇总 1. 科大讯飞星火认知大模型 主要特点&#xff1a; 多语言能力&#xff1a;以中文为核心&#xff0c;同时支持多语言处理&#xff0c;能够进行跨语种的语言理解和生成。 广泛的任务能力&#xff1a;具备内容生成、语言理解、知识问答、推理、数学计算、代码…

java 使用intern()性能对比

JDK 7及其之后的版本&#xff0c;intern()方法可以直接把堆中的字符串对象的地址放到字符串常量池表共享&#xff0c;从而达到节省内存的目的。 不使用intern()和使用intern()对象个数和内存占用区别 public class StringInternMemoryTest {static final int MAX_COUNT 1000 …

JetBrains AI Assistant 有哪些突出的优点

ai assistant激活成功后&#xff0c;如图 ai assistant渠道&#xff1a;https://web.52shizhan.cn/activity/ai-assistant 在去年五月份的 Google I/O 2023 上&#xff0c;Google 为 Android Studio 推出了 Studio Bot 功能&#xff0c;使用了谷歌编码基础模型 Codey,Codey 是…

行业内幕!宠物浮毛对肺有伤害吗?必看榜Top3浮毛空气净化器汇总

我有一个医生朋友&#xff0c;他常常给身边的朋友科普养猫、养狗、养宠物掉下来的毛发对呼吸道健康的影响。有听劝的朋友&#xff0c;采取了适当的防护措施。也有认为他在危言耸听的&#xff0c;明明宠物医生说对人没影响的&#xff0c;认为在人的医生眼里什么都是病原体。 早…

代码随想录算法训练营第30天 贪心算法 part04 | 题目:452. 用最少数量的箭引爆气球、 435. 无重叠区间 、763.划分字母区间

代码随想录算法训练营第30天 贪心算法 part04 | 题目&#xff1a;452. 用最少数量的箭引爆气球、 435. 无重叠区间 、763.划分字母区间 文章来源&#xff1a;代码随想录 题目名称&#xff1a;452. 用最少数量的箭引爆气球 在二维空间中有许多球形的气球。对于每个气球&#xf…

Tarjan的脱机最小公共祖先算法详解

Tarjan的脱机最小公共祖先算法详解 一、算法概述二、算法伪代码三、C语言实现四、证明与分析在解决脱机最小公共祖先(Least Common Ancestors, LCA)问题时,Tarjan算法提供了一种高效的途径。该算法通过一次深度优先搜索(DFS)遍历整棵树,并利用并查集(Union-Find)数据结…

【TiDB原理与实战详解】5、BR 物理备份恢复与Binlog 数据同步~学不会? 不存在的!

BR 物理备份恢复 BR 全称为 Backup & Restore&#xff0c;是 TiDB 分布式备份恢复的命令行工具&#xff0c;用于对 TiDB 集群进行数据备份和恢复。 相比 dumpling&#xff0c;BR 更适合大数据量的场景。 BR 除了可以用来进行常规备份恢复外&#xff0c;也可以在保证兼容…

centos 7部署nacos 2.4.1版本单点方式

文章目录 Nacos&#xff1a;微服务架构中的服务发现与配置管理利器官方网址引言Nacos简介Nacos的核心功能1. 服务发现和服务健康监测2. 动态配置服务3. 服务及其元数据管理 Nacos的工作原理Nacos的集群部署与高可用性Nacos的使用场景如何使用Nacos1. 安装Nacos2. 服务注册与发现…

Linux---FTP文件服务器搭建及实战

一、FTP简介 FTP: File Transfer Protocol文件传输协议 FTP是用于在网络上进行文件传输的一套标准协议&#xff0c;使用客户/服务器模式。它属于网络传输协议的应用层。文件传送(file transfer&#xff09;和文件访问(file access&#xff09;之间的区别在于&#xff1a;前者…

紫金大数据平台架构之路(一)----大数据任务开发和调度平台架构设计

一、总体设计 初来公司时&#xff0c;公司还没有大数据&#xff0c;我是作为大数据架构师招入的&#xff0c;结合公司的线上和线下业务&#xff0c;制定了如下的大数据架构路线图。 二、大数据任务开发和调度平台架构设计 在设计完总体架构后&#xff0c;并且搭建完hadoop/ya…

ArkUI-布局(四)

ArkUI-布局 轮播部分属性及方法循环播放及自动轮播导航点样式页面切换方式轮播方向每页显示多个子页面自定义切换动画 选项卡使用方式部分属性及方法顶部导航和底部导航侧边导航限制导航栏的滑动固定导航栏和滚动导航栏自定义导航栏切换至指定页签 轮播 Swiper组件提供滑动轮播…