可以通过修改切片方向的条件来实现自定义切片方向。在原始代码中,切片方向是x轴方向,可以将切片方向改为y轴方向。修改后的代码如下:

pcl::PointXYZRGB minPt, maxPt;
pcl::getMinMax3D(*m_cloud, minPt, maxPt);
pcl::console::TicToc time;
time.tic();
std::vector<int>idx;
//循环切片,次数少于点的个数
//切叶片
for (int i = 0; i < m_cloud->size(); ++i)
{
    //double maxX = 0.049;
    double minX = -0.001;
    if (m_cloud->points[i].x >= minX && m_cloud->points[i].x <= maxPt.x && (m_cloud->points[i].y <= -0.001 || m_cloud->points[i].y >= 0.049))
    {
        int index = floor((m_cloud->points[i].y - minPt.y) / m_dPlatform);
        float sliceMin = minPt.y + index * m_dPlatform;
        if ((m_cloud->points[i].y >= sliceMin) && (m_cloud->points[i].y < sliceMin + m_Delta))
        {
            idx.push_back(i);
        }
    }
}

在修改后的代码中,切片的方向由x轴改为了y轴。切片的条件也进行了相应的修改,判断点的y坐标是否在切片的范围内,并且判断点的x坐标是否在切片的两侧。切片的索引计算也进行了相应的修改,使用点的y坐标进行计算,并根据切片的间距和最小y坐标进行计算。最后将满足条件的点的索引添加到idx向量中。


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

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