文章目录

  • 1 函数原型
  • 2 代码实现
  • 3 输出结果
  • 4 源码

1 函数原型

  compute3DCentroid (const pcl::PointCloud<PointT> &cloud, Eigen::Vector4f &centroid);

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> &centroid)
{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 ❤️ 计算点云质心相关推荐

  1. PCL之计算点云质心---pcl::compute3DCentroid()

    质心计算公式 质心指的是质量的中心,认为是物体质量集中于此点的假想点. 通常物体质心坐标计算公式如下: 其中,为各质点的坐标,为质点对应的质量. PCL函数原理 计算点云质心时,令上述公式中的即可,则 ...

  2. PCL: 获取点云的质心(几何中心点)

      获取点云的质心有两种方式,一种是pcl自带的API:pcl::compute3DCentroid(*cloud, centroid);,另一种是用数学的方式求所有点坐标的平均值.下面的代码实现了这 ...

  3. PCL:demeanPointCloud ❤️ 去点云质心

    文章目录 1 函数原型 2 代码实现 3 结果展示 4 源码 1 函数原型 pcl::demeanPointCloud (const pcl::PointCloud<PointT> &am ...

  4. pcl::compute3DCentroid()计算质心算法原理

    质心计算公式 质心指的是质量的中心,认为是物体质量集中于此点的假想点. 通常物体质心坐标PcP_cPc​计算公式如下: Pc=1M∑i=0nmiriP_c = \frac{1}{M} \sum_{i= ...

  5. pcl计算点云法向量

    最近因为项目,需要计算点云的法向量,所以在网上看了一些资料,然后知道pcl库里面有这些功能,pcl的法向量计算的原理: pcl里面计算点云(自己的理解) 根据顶点采样最近的局部点云(k个),根据自己的 ...

  6. 【PCL自学:Segmentation3】基于PCL的点云分割:区域增长分割

    基于PCL的点云区域增长分割 一.什么是区域增长分割 二.区域增长分割原理剖析 三.区域增长分割示例代码 一.什么是区域增长分割   在本文中,我们将学习如何使用pcl:: regiongrow类中实 ...

  7. PCL的PNG文件和计算点云重心

    PCL提供节约一点云的值为一个PNG图像文件的可能方案.显然,这只能用有序的点云来完成,因为生成的图像的行和列将与点云的对应完全一致.例如,如果你从一个传感器Kinect或Xtion的点云,你可以用这 ...

  8. PCL点云处理之点云质心的三种计算方法(七十六)

    PCL点云处理之点云质心的三种计算方法(七十六) 一.质心? 二.算法实验 1.代码 2.效果 一.质心? 就计算某块点云坐标均值,可以调库,也可以自己算,easy 二.算法实验 1.代码 代码如下( ...

  9. 三维重建PCL:点云单侧面正射投影

    终于把点云单侧面投影正射投影的代码写完了,为一个阶段,主要使用平面插值方法,且只以XOY平面作为的正射投影面.有些凑合的地方,待改进. 方法思路:使用Mesh模型,对每一个表面进行表面重建.借助Ope ...

最新文章

  1. java元婴期(18)----java进阶(spring(2)----DI(依赖注入)基于注解的IOC与DI配置properties)
  2. 0130互联网新闻 | 小红书完成超3亿美元D轮融资;网易游戏收购Quantic Dream工作室少数股权...
  3. Java 建模:UML 工作簿,第 1 部分
  4. java线程——阻塞队列
  5. 单例模式的七种实现方法(java版)
  6. csdn2020年度博客之星 - 直播间(恭喜圆满结束)
  7. swagger 配置- ssm
  8. 设计模式第四篇-工厂模式
  9. innerdb disable error
  10. android的surfaceflinger原理讲解
  11. java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决(转)
  12. 计算机专业的创新创业规划书,计算机及相关专业创新创业教育指导书.pdf
  13. Apollo之Canbus模块学习总结
  14. 奈奎斯特与香农定理_奈奎斯特定理和香农定理有什么区别?
  15. neo4j CQL使用
  16. 日程安排小程序实战教程(上篇)
  17. 基于wifi面向android的远程视频监控客户端开发,基于Wifi面向Android的远程视频监控客户端开发...
  18. date获取时间某年某月一共有多少天以及格式化天数,月份,年
  19. 生信分析流程框架概述
  20. 钢铁行业,煤炭行业,有色金属行业的历史利润,负债率

热门文章

  1. 在apache中运行 cgi程序
  2. YOLO5 旋转模型图片标注及训练
  3. win10待机状态仍然联网设置
  4. android电视投影ipad,【沙发管家】苹果手机, Ipad连接安卓智能电视投屏教程!
  5. (转)【如何快速的开发一个完整的iOS直播app】(原理篇)
  6. 韦东山 IMX6ULL和正点原子_stm32入门开发板选野火还是正点原子好,哪个的视频讲到好一点?...
  7. linux alc权限,Linux账号管理与ALC权限设定(二)
  8. SAP FICO模块-固定资产月结的注意点
  9. canvas 变形记——移动、旋转、缩放、变形
  10. GO语言与其他语言初步比较