PCL质心求取算法

emmm第一天学习PCL 可能很多都是用自带的写的加油吧!
---------------------------------------------------------------------------------------------------------------------------------

#include <iostream>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/common/centroid.h> //中心?
int main(int argc, char** argv)
{
 //定义一个点云cloud
 pcl::PointCloud<pcl::PointXYZ> cloud;
 cloud.width = 100;
 cloud.height = 1;
 cloud.points.resize(cloud.width * cloud.height);
 for (size_t i = 0; i < cloud.points.size(); ++i)
 {
  cloud.points[i].x = 1024 * rand() / (RAND_MAX + 1.0f);
  cloud.points[i].y = 1024 * rand() / (RAND_MAX + 1.0f);
  cloud.points[i].z = 1024 * rand() / (RAND_MAX + 1.0f);
 }
 //创建存储点云质心的对象
 Eigen::Vector4f centroid;
 //
 pcl::compute3DCentroid(cloud, centroid);
 std::cout << "点云质心是("
  << centroid[0] << ","
  << centroid[1] << ","
  << centroid[2] << ")." << std::endl;
 system("pause");
 return 0;
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用PCL库中的`computeCentroid()`函数点云的,并使用可视化工具(如PCL Visualizer)将其可视化。下面是一个示例代码: ```c++ #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/point_types.h> #include <pcl/visualization/pcl_visualizer.h> int main(int argc, char** argv) { if (argc < 2) { std::cerr << "Usage: " << argv[0] << " point_cloud.pcd" << std::endl; return -1; } // Load point cloud data from file pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); if (pcl::io::loadPCDFile<pcl::PointXYZ>(argv[1], *cloud) == -1) { std::cerr << "Failed to load point cloud file " << argv[1] << std::endl; return -1; } // Compute the centroid of the point cloud Eigen::Vector4f centroid; pcl::compute3DCentroid(*cloud, centroid); // Print the centroid coordinates std::cout << "Centroid: (" << centroid[0] << ", " << centroid[1] << ", " << centroid[2] << ")" << std::endl; // Visualize the point cloud and its centroid pcl::visualization::PCLVisualizer viewer("Point Cloud Viewer"); viewer.setBackgroundColor(0.0, 0.0, 0.0); viewer.addPointCloud<pcl::PointXYZ>(cloud); viewer.addSphere<pcl::PointXYZ>(pcl::PointXYZ(centroid[0], centroid[1], centroid[2]), 0.1, "centroid"); viewer.spin(); return 0; } ``` 在此示例代码中,我们首先加载点云文件,然后使用`compute3DCentroid()`函数计算点云的。我们还将作为一个小球添加到可视化工具中,以便更好地展示。最后,我们使用`spin()`函数进入可视化循环,直到用户关闭可视化窗口为止。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值