PCL:compute3DCentroid ❤️ 计算点云质心
文章目录
- 1 函数原型
- 2 代码实现
- 3 输出结果
- 4 源码
1 函数原型
compute3DCentroid (const pcl::PointCloud<PointT> &cloud, Eigen::Vector4f ¢roid);
2 代码实现
给定点云,返回点云质心,数据类型为 Vector4f
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/common/centroid.h>using namespace std;typedef pcl::PointXYZ PointT;int main()
{//------------------------------------ 加载点云 ---------------------------------pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>);pcl::PCDReader reader; if (reader.read("tree.pcd", *cloud) < 0){PCL_ERROR("\a->点云文件不存在!\n");system("pause");return -1;}cout << "->加载了 " << cloud->points.size() << " 个数据点" << endl;//==============================================================================//-------------------------------- 获取点云质心 ---------------------------------Eigen::Vector4f centroid; //存放质心坐标pcl::compute3DCentroid(*cloud, centroid); //计算点云质心cout << "\n->点云质心为:" << "(" << centroid[0] << ", " << centroid[1] << ", " << centroid[2] << ")" << endl;//==============================================================================return 0;
}
3 输出结果
->加载了 5746 个数据点->点云质心为:(1.6172, 1.74113, 4.83147)
4 源码
template <typename PointT, typename Scalar> inline unsigned int
pcl::compute3DCentroid (const pcl::PointCloud<PointT> &cloud, Eigen::Matrix<Scalar, 4, 1> ¢roid)
{if (cloud.empty ())return (0);// Initialize to 0centroid.setZero ();// For each point in the cloud// If the data is dense, we don't need to check for NaNif (cloud.is_dense){for (size_t i = 0; i < cloud.size (); ++i){centroid[0] += cloud[i].x;centroid[1] += cloud[i].y;centroid[2] += cloud[i].z;}centroid /= static_cast<Scalar> (cloud.size ());centroid[3] = 1;return (static_cast<unsigned int> (cloud.size ()));}// NaN or Inf values could exist => check for themelse{unsigned cp = 0;for (size_t i = 0; i < cloud.size (); ++i){// Check if the point is invalidif (!isFinite (cloud [i]))continue;centroid[0] += cloud[i].x;centroid[1] += cloud[i].y;centroid[2] += cloud[i].z;++cp;}centroid /= static_cast<Scalar> (cp);centroid[3] = 1;return (cp);}
}
相关链接
PCL点云数据处理基础❤️❤️❤️目录
PCL:compute3DCentroid ❤️ 计算点云质心相关推荐
- PCL之计算点云质心---pcl::compute3DCentroid()
质心计算公式 质心指的是质量的中心,认为是物体质量集中于此点的假想点. 通常物体质心坐标计算公式如下: 其中,为各质点的坐标,为质点对应的质量. PCL函数原理 计算点云质心时,令上述公式中的即可,则 ...
- PCL: 获取点云的质心(几何中心点)
获取点云的质心有两种方式,一种是pcl自带的API:pcl::compute3DCentroid(*cloud, centroid);,另一种是用数学的方式求所有点坐标的平均值.下面的代码实现了这 ...
- PCL:demeanPointCloud ❤️ 去点云质心
文章目录 1 函数原型 2 代码实现 3 结果展示 4 源码 1 函数原型 pcl::demeanPointCloud (const pcl::PointCloud<PointT> &am ...
- pcl::compute3DCentroid()计算质心算法原理
质心计算公式 质心指的是质量的中心,认为是物体质量集中于此点的假想点. 通常物体质心坐标PcP_cPc计算公式如下: Pc=1M∑i=0nmiriP_c = \frac{1}{M} \sum_{i= ...
- pcl计算点云法向量
最近因为项目,需要计算点云的法向量,所以在网上看了一些资料,然后知道pcl库里面有这些功能,pcl的法向量计算的原理: pcl里面计算点云(自己的理解) 根据顶点采样最近的局部点云(k个),根据自己的 ...
- 【PCL自学:Segmentation3】基于PCL的点云分割:区域增长分割
基于PCL的点云区域增长分割 一.什么是区域增长分割 二.区域增长分割原理剖析 三.区域增长分割示例代码 一.什么是区域增长分割 在本文中,我们将学习如何使用pcl:: regiongrow类中实 ...
- PCL的PNG文件和计算点云重心
PCL提供节约一点云的值为一个PNG图像文件的可能方案.显然,这只能用有序的点云来完成,因为生成的图像的行和列将与点云的对应完全一致.例如,如果你从一个传感器Kinect或Xtion的点云,你可以用这 ...
- PCL点云处理之点云质心的三种计算方法(七十六)
PCL点云处理之点云质心的三种计算方法(七十六) 一.质心? 二.算法实验 1.代码 2.效果 一.质心? 就计算某块点云坐标均值,可以调库,也可以自己算,easy 二.算法实验 1.代码 代码如下( ...
- 三维重建PCL:点云单侧面正射投影
终于把点云单侧面投影正射投影的代码写完了,为一个阶段,主要使用平面插值方法,且只以XOY平面作为的正射投影面.有些凑合的地方,待改进. 方法思路:使用Mesh模型,对每一个表面进行表面重建.借助Ope ...
最新文章
- java元婴期(18)----java进阶(spring(2)----DI(依赖注入)基于注解的IOC与DI配置properties)
- 0130互联网新闻 | 小红书完成超3亿美元D轮融资;网易游戏收购Quantic Dream工作室少数股权...
- Java 建模:UML 工作簿,第 1 部分
- java线程——阻塞队列
- 单例模式的七种实现方法(java版)
- csdn2020年度博客之星 - 直播间(恭喜圆满结束)
- swagger 配置- ssm
- 设计模式第四篇-工厂模式
- innerdb disable error
- android的surfaceflinger原理讲解
- java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决(转)
- 计算机专业的创新创业规划书,计算机及相关专业创新创业教育指导书.pdf
- Apollo之Canbus模块学习总结
- 奈奎斯特与香农定理_奈奎斯特定理和香农定理有什么区别?
- neo4j CQL使用
- 日程安排小程序实战教程(上篇)
- 基于wifi面向android的远程视频监控客户端开发,基于Wifi面向Android的远程视频监控客户端开发...
- date获取时间某年某月一共有多少天以及格式化天数,月份,年
- 生信分析流程框架概述
- 钢铁行业,煤炭行业,有色金属行业的历史利润,负债率
热门文章
- 在apache中运行 cgi程序
- YOLO5 旋转模型图片标注及训练
- win10待机状态仍然联网设置
- android电视投影ipad,【沙发管家】苹果手机, Ipad连接安卓智能电视投屏教程!
- (转)【如何快速的开发一个完整的iOS直播app】(原理篇)
- 韦东山 IMX6ULL和正点原子_stm32入门开发板选野火还是正点原子好,哪个的视频讲到好一点?...
- linux alc权限,Linux账号管理与ALC权限设定(二)
- SAP FICO模块-固定资产月结的注意点
- canvas 变形记——移动、旋转、缩放、变形
- GO语言与其他语言初步比较