PCL之计算点云质心---pcl::compute3DCentroid()
质心计算公式
质心指的是质量的中心,认为是物体质量集中于此点的假想点。
通常物体质心坐标计算公式如下:
其中,为各质点的坐标,为质点对应的质量。
PCL函数原理
计算点云质心时,令上述公式中的即可,则点云质心坐标计算公式如下:
PLC函数实现
Eigen::Vector4f centroid; //质心
pcl::compute3DCentroid(*cloud_smoothed,centroid); // 计算质心
该函数的原理即是使用上述公式计算点云质心坐标,接下来通过代码进行验证。
代码实现
#include <iostream>
#include <Eigen/Core>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <pcl/common/transforms.h>
#include <pcl/visualization/pcl_visualizer.h>using namespace std;
typedef pcl::PointXYZ PointT;int main(int argc, char **argv)
{// 导入点云pcl::PointCloud<PointT>::Ptr cloud(new pcl::PointCloud<PointT>);// 点云文件地址:https://github.com/PointCloudLibrary/data/blob/master/tutorials/table_scene_lms400.pcdif (pcl::io::loadPCDFile(" table_scene_lms400.pcd", *cloud) == -1) { // 读取.pcd文件cerr << "can't read file table_scene_lms400.pcd" << endl;return -1;}// PCL函数计算质心Eigen::Vector4f centroid; // 质心pcl::compute3DCentroid(*cloud, centroid); // 齐次坐标,(c0,c1,c2,1)// 按公式计算质心PointT p_c;p_c.x = 0; p_c.y = 0; p_c.z = 0;for (auto p : cloud->points) {p_c.x += p.x;p_c.y += p.y;p_c.z += p.z;}p_c.x /= cloud->points.size();p_c.y /= cloud->points.size();p_c.z /= cloud->points.size();// 结果对比cout << "pcl计算点云质心结果:" << centroid << endl;cout << "按照公式计算点云质心结果:" << p_c<< endl;// 可视化pcl::visualization::PCLVisualizer viewer;viewer.addPointCloud(cloud);viewer.addCoordinateSystem();// 质心坐标PointT center;center.x = centroid(0);center.y = centroid(1);center.z = centroid(2);viewer.addSphere(center, 0.03, 1, 0, 0, "sphere",0);while (!viewer.wasStopped()){viewer.spinOnce(100);}return 0;
}
- 结果
PCL之计算点云质心---pcl::compute3DCentroid()相关推荐
- PCL:compute3DCentroid ❤️ 计算点云质心
文章目录 1 函数原型 2 代码实现 3 输出结果 4 源码 1 函数原型 compute3DCentroid (const pcl::PointCloud<PointT> &cl ...
- PCL: 获取点云的质心(几何中心点)
获取点云的质心有两种方式,一种是pcl自带的API:pcl::compute3DCentroid(*cloud, centroid);,另一种是用数学的方式求所有点坐标的平均值.下面的代码实现了这 ...
- PCL:demeanPointCloud ❤️ 去点云质心
文章目录 1 函数原型 2 代码实现 3 结果展示 4 源码 1 函数原型 pcl::demeanPointCloud (const pcl::PointCloud<PointT> &am ...
- pcl计算点云法向量
最近因为项目,需要计算点云的法向量,所以在网上看了一些资料,然后知道pcl库里面有这些功能,pcl的法向量计算的原理: pcl里面计算点云(自己的理解) 根据顶点采样最近的局部点云(k个),根据自己的 ...
- 【PCL自学:Segmentation3】基于PCL的点云分割:区域增长分割
基于PCL的点云区域增长分割 一.什么是区域增长分割 二.区域增长分割原理剖析 三.区域增长分割示例代码 一.什么是区域增长分割 在本文中,我们将学习如何使用pcl:: regiongrow类中实 ...
- 【PCL自学:Filtering】PCL中的各类滤波器介绍与使用 (持续更新)
PCL_filter模块中各类滤波器目录 一.直通滤波器(PassThrough):用于阈值滤除 1.直通滤波器介绍 2.示例代码 二.体素滤波器(VoxelGrid filter):用于下采样 1. ...
- PCL的PNG文件和计算点云重心
PCL提供节约一点云的值为一个PNG图像文件的可能方案.显然,这只能用有序的点云来完成,因为生成的图像的行和列将与点云的对应完全一致.例如,如果你从一个传感器Kinect或Xtion的点云,你可以用这 ...
- PCL点云处理之点云质心的三种计算方法(七十六)
PCL点云处理之点云质心的三种计算方法(七十六) 一.质心? 二.算法实验 1.代码 2.效果 一.质心? 就计算某块点云坐标均值,可以调库,也可以自己算,easy 二.算法实验 1.代码 代码如下( ...
- 三维重建PCL:点云单侧面正射投影
终于把点云单侧面投影正射投影的代码写完了,为一个阶段,主要使用平面插值方法,且只以XOY平面作为的正射投影面.有些凑合的地方,待改进. 方法思路:使用Mesh模型,对每一个表面进行表面重建.借助Ope ...
最新文章
- 网曝某互联网大厂给员工电脑安装插件,基本等于全程监控!网友:就是监控你们划水!...
- mysql 日志 超过 m,linux 下查找大日志文件,比如大于500M的文件
- LeetCode--75.颜色分类(三路快排,计数排序)
- linux中根据进程的PID值来查找执行文件的及其路径
- umask设置导致的weblogic中的应用上传的文件没有权限打开
- c++两个文档匹配数据_MongoDB 数据库的命名、设计规范
- iOS ViewController利用代理页面传值
- leetcode - Best Time to Buy and Sell Stock Ⅱ
- 【路径规划】基于matlab无线充电车辆路径和速度预测【含Matlab源码 1473期】
- 数据挖掘概念与技术(原书第三版)范明 孟小峰译-----第二章课后习题答案
- 小米浏览器导出html,小米浏览器离线视频如何导出 小米浏览器离线视频导出教程...
- SpringAOP的实现原理
- android 悬浮按钮点击展开动画,android仿微信浮窗的自动贴边可展开悬浮按钮-博客...
- android手机如何截屏,安卓手机怎么截屏(华为手机的几种截图方法)
- C++ 使用Poco库实现日志操作
- Choosing Teams
- 0x80073712_win10系统-更新失败提示“0x80073712”如何解决?
- 猛兽之地服务器维护,猛兽之地Roguelands全材料获取途径详解
- 微信小程序中 iconfont 图标的使用(包括彩色图标)
- 个人赛C 柠檬树2--树链剖分+维护最值出现次数/LCA
热门文章
- Notepad++ 配置java编译环境
- SVN篇:Shell脚本实现SVN启动,停止,重启
- Ubuntu中使用freeradius配置RADIUS,并在RADIUS中配置LDAP 并实现AP认证
- 戴尔台式机安装win 7系统
- 力扣题目——429. N 叉树的层序遍历
- 【Kafka】Kafka安装部署
- 【Hive】多字符分隔
- Intellij IDEA 通过数据库表逆向生成带注释的实体类文件超级详细步骤,附详细解决方案
- Intellij IDEA 安装插件 报 ‘plugin xxxx is incompatible‘ 解决方案
- OpenCV imread读取图片,imshow展示图片,出现cv:Exception at memory location异常