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

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

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

就是将点云文件PCD保存成PNG文件,程序如下

#include <pcl/io/pcd_io.h>
#include <pcl/io/png_io.h>

int
main(int argc, char** argv)
{
    // 创建点云对象
    pcl::PointCloud<pcl::PointXYZRGB>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGB>);

    // 读取点云文件
    if (pcl::io::loadPCDFile<pcl::PointXYZRGB>(argv[1], *cloud) != 0)
    {
        return -1;
    }

    // 保存图片,(必须为有序点云)
    pcl::io::savePNGFile("output.png", *cloud, "rgb");
}

那么这里的实验结果是根据我之前使用的用kinect获得的点云数据,他的点云可视化效果如下

保存为PNG的结果为

如果省略参数,函数将默认保存RGB域。

(2)计算点云重心

 点云的重心是一个点坐标,计算出云中所有点的平均值。你可以说它是“质量中心”,它对于某些算法有多种用途。如果你想计算一个聚集的物体的实际重心,记住,传感器没有检索到从相机中相反的一面,就像被前面板遮挡的背面,或者里面的。只有面对相机表面的一部分。

#include <pcl/io/pcd_io.h>
#include <pcl/common/centroid.h>

#include <iostream>

int
main(int argc, char** argv)
{
    // 创建点云的对象
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);

    // 读取点云
    if (pcl::io::loadPCDFile<pcl::PointXYZ>(argv[1], *cloud) != 0)
    {
        return -1;
    }

    // 创建存储点云重心的对象
    Eigen::Vector4f centroid;
    
    pcl::compute3DCentroid(*cloud, centroid);

    std::cout << "The XYZ coordinates of the centroid are: ("
              << centroid[0] << ", "
              << centroid[1] << ", "
              << centroid[2] << ")." << std::endl;
}

这样就可以计算出点云的XYZ三个轴的重心的坐标值

 简单的程序演示,大神请忽略,

微信公众号号可扫描二维码一起共同学习交流

相关文章
Fastadmin后台页面添加顶部按钮
操作的前提是需要在fastadmin框架中添加对应的控制器、模型、视图页面,可以手动创建,也可以使用curd一键生成。
559 0
|
数据可视化 Ubuntu Linux
研发实用工具,推荐一款代码统计神器GitStats
研发实用工具,推荐一款代码统计神器GitStats
1891 0
研发实用工具,推荐一款代码统计神器GitStats
|
Shell
Ubuntu20.04安装anaconda并默认激活conda base环境(步骤详细/操作简单实用)
Ubuntu20.04安装anaconda并默认激活conda base环境方法
20512 0
|
12月前
|
机器学习/深度学习 传感器 人工智能
《C++与人工智能在工业自动化故障诊断中的“智慧融合”大揭秘》
在工业自动化中,C++与人工智能的结合实现了智能故障诊断。C++高效处理传感器数据,构建并优化AI模型,实时监控设备状态,精准识别故障,保障生产稳定。未来,这一技术组合将在边缘计算和5G等新技术推动下,开启工业自动化的新篇章。
191 11
|
机器学习/深度学习
深入理解机器学习中的过拟合与正则化
深入理解机器学习中的过拟合与正则化
|
运维 Ubuntu 应用服务中间件
自动化运维的魔法:使用Ansible进行批量配置管理
【8月更文挑战第31天】 在这篇文章中,我们将探索如何通过Ansible简化日常的运维任务。从基础安装到编写实用的Playbook,本文将引导你实现自动化部署、配置管理和批量操作。我们的目标是让复杂的运维工作变得像施法一样简单有趣。
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的校园活动管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的校园活动管理系统附带文章源码部署视频讲解等
256 0
|
关系型数据库 MySQL 数据库
Python Stock安装与使用
Python Stock安装与使用
558 1
|
NoSQL 容器 消息中间件
rtsp-simple-server + srs搭建流媒体服务器
rtsp-simple-server + srs搭建流媒体服务器
1687 0
|
监控 网络协议 Linux
振南技术干货集:各大平台串口调试软件大赏(7)
振南技术干货集:各大平台串口调试软件大赏(7)