C++ PCL点云曲率分割颜色标识

news2025/1/16 21:46:15

程序示例精选
C++ PCL点云曲率分割颜色标识
如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!

前言

这篇博客针对《C++ PCL点云曲率分割颜色标识》编写代码,代码整洁,规则,易读。 学习与应用推荐首选。


运行结果


文章目录

一、所需工具软件
二、使用步骤
       1. 主要代码
       2. 运行结果
三、在线协助

一、所需工具软件

       1. VS2019
       2. C++

二、使用步骤

代码如下(示例):


#include <iostream>
#include <vector>
#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>
#include <pcl/features/normal_3d.h>
#include <pcl/features/principal_curvatures.h>
#include <pcl/visualization/cloud_viewer.h>

using namespace std;

int main(int argc, char** argv)
{

	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
	pcl::io::loadPCDFile<pcl::PointXYZ>("20191009_Cloud222 - Cloud2-1 las2pcd-move-scanline.pcd", *cloud); //读取点云
	cout << "Loaded " << cloud->points.size() << " points." << endl;//显示读取点云的个数
	// 计算点云的法线
	pcl::NormalEstimation<pcl::PointXYZ, pcl::Normal> n;
	n.setInputCloud(cloud);
	//设置邻域点搜索方式
	pcl::search::KdTree<pcl::PointXYZ>::Ptr tree(new pcl::search::KdTree<pcl::PointXYZ>);
	n.setSearchMethod(tree);
	//设置KD树搜索半径
	 //n.setRadiusSearch (0.02);
	n.setKSearch(25);
	//定义一个新的点云储存含有法线的值
	pcl::PointCloud<pcl::Normal>::Ptr normals(new pcl::PointCloud<pcl::Normal>);
	//计算出来法线的值
	n.compute(*normals);
	// 建立主曲率计算
	pcl::PrincipalCurvaturesEstimation<pcl::PointXYZ, pcl::Normal, pcl::PrincipalCurvatures> p;

	// 计算主曲率
	pcl::PointCloud<pcl::PrincipalCurvatures>::Ptr pri(new pcl::PointCloud<pcl::PrincipalCurvatures>());
	cout << "output points.size: " << pri->points.size() << endl;

	pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud_b(new pcl::PointCloud<pcl::PointXYZRGB>);
	cloud_b->points.resize(cloud->size());

	for (int i = 0; i < cloud->points.size(); i++)//所有点赋予灰色
	{
		cloud_b->points[i].x = cloud->points[i].x;
		cloud_b->points[i].y = cloud->points[i].y;
		cloud_b->points[i].z = cloud->points[i].z;
		/*cout << "曲率:" << pri->points[i].pc1 << ";"
			<< pri->points[i].pc2 << ";"
			<< (pri->points[i].pc1 + pri->points[i].pc2) / 2 << ";"
			<< pri->points[i].pc1 * pri->points[i].pc2<<endl;*///逐点显示计算的最大曲率,最小曲率,平均曲率,高斯曲率
	}

	for (int i = 0; i < pri->points.size(); i++)//
	{
		//if (pri->points[i].pc1>0.01)//最大曲率
		//if (pri->points[i].pc2>0.01)//最小曲率
		//if ((pri->points[i].pc1 + pri->points[i].pc2)/2>0.01)//平均曲率
	}
	//显示第0个点的最大曲率、最小曲率、平均曲率、高斯曲率、法向量计算出来的曲率。目的:就是想看看法向量这个数据结构里的曲率到底计算的是哪个曲率。结果:好像哪个都不是
	cout << "曲率:" << pri->points[0].pc1 << ";"
		<< pri->points[0].pc2 << ";"
		<< (pri->points[0].pc1 + pri->points[0].pc2) / 2 << ";"
		<< pri->points[0].pc1 * pri->points[0].pc2 << ";"
		<< normals->points[0].curvature << endl;

	pcl::visualization::CloudViewer viewer("Viewer");
	viewer.showCloud(cloud_b);

	pcl::io::savePLYFile<pcl::PointXYZRGB>("20191009_Cloud222 - Cloud2-1 las2pcd-move-scanline-angle2.ply", *cloud_b);


	getchar();
	return 0;
}



运行结果

三、在线协助:

如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助!

1)远程安装运行环境,代码调试
2)Visual Studio, Qt, C++, Python编程语言入门指导
3)界面美化
4)软件制作

当前文章连接:https://blog.csdn.net/alicema1111/article/details/132666851
个人博客主页:https://blog.csdn.net/alicema1111?type=blog
博主所有文章点这里:https://blog.csdn.net/alicema1111?type=blog

博主推荐:
Python人脸识别考勤打卡系统:
https://blog.csdn.net/alicema1111/article/details/133434445
Python果树水果识别:https://blog.csdn.net/alicema1111/article/details/130862842
Python+Yolov8+Deepsort入口人流量统计:https://blog.csdn.net/alicema1111/article/details/130454430
Python+Qt人脸识别门禁管理系统:https://blog.csdn.net/alicema1111/article/details/130353433
Python+Qt指纹录入识别考勤系统:https://blog.csdn.net/alicema1111/article/details/129338432
Python Yolov5火焰烟雾识别源码分享:https://blog.csdn.net/alicema1111/article/details/128420453
Python+Yolov8路面桥梁墙体裂缝识别:https://blog.csdn.net/alicema1111/article/details/133434445

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

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

相关文章

信息系统项目管理师第四版学习笔记——配置与变更管理

配置管理 管理基础 配置管理是为了系统地控制配置变更&#xff0c;在信息系统项目的整个生命周期中维持配置的完整性和可跟踪性&#xff0c;而标识信息系统建设在不同时间点上配置的学科。 配置项的版本号规则与配置项的状态定义相关。例如&#xff1a;①处于“草稿”状态的…

strncpy,strncat,strncmp字符串函数详解(长度受限制)

目录 一&#xff0c;strncpy函数 1&#xff0c;strncpy函数简介 2&#xff0c;strncpy函数示例 3&#xff0c;注意事项 二&#xff0c;strncat函数 1&#xff0c;strncat函数简介 2&#xff0c;strncat函数示例 3&#xff0c;注意事项 三&#xff0c;strncmp函数 1&…

通讯录的完善(文件操作)

目录 前言&#xff1a; 保存联系人 读取联系人&#xff1a; 总结&#xff1a; 前言&#xff1a; 对于我们之前利用动态内存实现的通讯录来说&#xff0c;存在一个严重的问题。 就是当我们的程序运行结束&#xff0c;此时我们在通讯录所添加的全部联系人信息会全部丢失。 …

网页设计学习记录-常用圆角按钮css

.button {border: 0px;padding: 5px;border-radius: 100px;background-color: #9eb80c;width: 150px;height: 50px;color: white; } .button:hover {cursor: pointer; } 效果图

【AN-Animate教程——了解AN用途】

【AN-Animate教程——了解AN用途】 Animate是啥Animate能做什么2D动画制作帧动画制作矢量图形绘制和编辑角色建模与骨骼绑定动画特效和过渡效果动画导出与发布 除了动画还能做什么&#xff1f; 这一段时间没更新&#xff0c;主要是工作生活陷入了一个瓶颈。本想着阅读一些人工智…

安卓三防平板在行业应用中有哪些优势

在工业维修和检测中&#xff0c;安卓三防平板的应用也十分广泛。它可以搭载各种专业软件和工具&#xff0c;帮助工人们进行设备故障排查和维护&#xff0c;降低了维修成本和停机时间。 一、产品卖点&#xff1a; 1. 防水性能&#xff1a;该手持平板采用了防水设计&#xff0c;…

go mod 使用三方包、go get命令

一、环境变量设置 go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,https://goproxy.io,direct 二、goland开启 go mod 三、go mod 使用 在go.mod文件中声明三方包地址&版本号即可&#xff0c;如下&#xff1a; 开发工具goland会自动解析go.mod文件&#x…

Vscode中使用Romote远程开发调试Ros2环境

首先&#xff0c;成功安装ros2环境&#xff0c;参考官方文档中的教程&#xff0c;能用运行出来此处的代码 Writing a simple publisher and subscriber (Python) — ROS 2 Documentation: Iron documentation 下载vscode&#xff0c;进行远程开发&#xff0c;具体参考&#xf…

微软 AR 眼镜新专利:包含热拔插电池

近日&#xff0c;微软在增强现实&#xff08;AR&#xff09;领域进行深入的研究&#xff0c;并申请了一项有关于“热插拔电池”的专利。该专利于2023年10月5日发布&#xff0c;描述了一款采用模块化设计的AR眼镜&#xff0c;其热插拔电池放置在镜腿部分&#xff0c;可以直接替代…

视频监控管理系统EasyCVR+智能分析网关如何为银行安保系统保驾护航

银行是国家重点安防保护单位&#xff0c;现金流通性高、人员复杂&#xff0c;对高精度的安全监控尤为需要。特别在当今社会&#xff0c;高智商犯罪分子层出不穷&#xff0c;恶性案件也屡屡发生。传统的监控模式已经无法满足银行的安保要求&#xff0c;而现在市面上融合了智能化…

交直流回馈式电子负载的优势和特点

交直流回馈式电子负载是用于测试和模拟电源、电池和其他电子设备的负载装置&#xff0c;它能够承受大范围的负载电流和电压&#xff0c;可以满足不同类型电子设备的测试需求。该负载装置具有精确的电流和电压测量功能&#xff0c;可以提供准确的测试结果&#xff0c;帮助用户评…

淘宝商品评论数据接口,淘宝商品评论API接口

淘宝商品评论数据接口可以通过淘宝开放平台API获取。 通过构建合理的请求URL&#xff0c;可以向淘宝服务器发起HTTP请求&#xff0c;获取商品评论数据。接口返回的数据一般为JSON格式&#xff0c;包含了商品的各种评价信息。获取到商品评论数据后&#xff0c;可以对其进行处理…

Spring WebClient 基于响应式编程模型的HTTP客户端

一、简介 WebClient是一个非阻塞的、可扩展的、基于Reactive Streams规范的HTTP客户端。它提供了一种简洁的方式来进行HTTP请求&#xff0c;并且可以很好地与其他Spring组件集成。WebClient支持同步和异步操作&#xff0c;使得它非常适合用于构建响应式应用程序。 WebClient允…

全网都在用的英语配音软件~

现在有很多智能配音软件都可以输入文字内容生成语音&#xff0c;让我们给视频配音的过程更加简单方便。但目前很多比较常见的文字转语音软件都只能配音中文&#xff0c;而无法配音英语。想要智能生成英语的配音的小伙伴看过来&#xff0c;给大家推荐一款超实用的英语配音软件&a…

从零开始学习 Java:简单易懂的入门指南之多线程(三十四)

多线程 1.实现多线程1.1简单了解多线程1.2并发和并行1.3进程和线程1.4实现多线程方式一&#xff1a;继承Thread类【应用】1.5实现多线程方式二&#xff1a;实现Runnable接口【应用】1.6实现多线程方式三: 实现Callable接口【应用】1.7设置和获取线程名称【应用】1.8线程休眠【应…

Linux系统编程:编译过程以及GDB调试

编译工具链SDK&#xff08;Software Development Kit&#xff09; 在windows下编写程序&#xff0c;我们通常会用IDE&#xff0c;比如idea、vs等&#xff0c;这些工具将编译链接什么的全都暗地里解决好了我们只要写程序就行&#xff0c;但很明显&#xff0c;在Linux系统下做不…

网吧2023:中国电竞的滚烫夏天

【潮汐商业评论/原创】 随着亚运会“中国队拿下电竞首金”登上微博热搜&#xff0c;电竞与网游又一次占据着网民视野中的C位&#xff0c;场内电竞中心的比赛热血澎湃&#xff0c;场外网吧的欢呼声也此起彼伏。 中国玩家的网游之路大多是从网吧里一排17英寸的大屁股显示器前开…

大模型之Prompt研究和技巧

大模型之Prompt研究和技巧 大模型之Prompt编写简介组成技术Zero-ShotFew-shotCOTCOT-SCTOTGoTReAct 大模型之Prompt编写 简介 Prompt是是给 AI **模型的指令&#xff0c;**一个简短的文本输入&#xff0c;用于引导AI模型生成特定的回答或执行特定任务。 Prompt是你与语言模型沟…

milvus测试

milvus测试 目标 其实&#xff0c;我应该弄明白他的输入输出分别是什么&#xff1f; 输入是图片&#xff0c;图片经过ml模型进行特征提取&#xff0c;再在milvus中进行存储或者检索 部署 ✘ delldell-Precision-3630-Tower  /nvme/baum/git-project/milvus   master …

【EI会议征稿】第三届计算建模、仿真与数据分析国际学术会议(CMSDA 2023)

第三届计算建模、仿真与数据分析国际学术会议(CMSDA 2023) 第三届计算建模、仿真与数据分析国际学术会议(CMSDA 2023)将于2023年12月22-24日即将在中国海南省三亚市召开。首届计算建模、仿真与数据分析国际学术会议已于2021、2022年连续成功举办&#xff0c;吸引了近200名计算机…