假设我们已经读入了PCL的ply点云数据,并存储在一个'pcl::PointCloudpcl::PointXYZ'类型的变量中。

首先,我们需要定义两个变量分别记录最大和最小的y值:

float maxY = -std::numeric_limits<float>::infinity();
float minY = std::numeric_limits<float>::infinity();

然后,我们遍历点云数据,对于每一个点,判断其y值是否比当前记录的最大或最小y值还要大或小,如果是的话,就更新最大或最小y值以及对应的点的索引:

int maxIndex = -1;
int minIndex = -1;
for (int i = 0; i < cloud->size(); i++) {
    float y = cloud->points[i].y;
    if (y > maxY) {
        maxY = y;
        maxIndex = i;
    }
    if (y < minY) {
        minY = y;
        minIndex = i;
    }
}

最后,我们就可以得到最大和最小y值对应的点的坐标了:

pcl::PointXYZ maxPoint = cloud->points[maxIndex];
pcl::PointXYZ minPoint = cloud->points[minIndex];
C++代码获取PLY点云数据中Y值最大最小点

原文地址: https://www.cveoy.top/t/topic/oLdI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录