a little bit 2019-09-24 20:40 采纳率: 0%
浏览 1485

关于pcl中ransac算法识别直线时报错error segmenting the model! no solution found

在使用ransac算法识别直线时,当代码如下时不能正常识别,会报错“error segmenting the model! no solution found”“no samples could be selected!”
代码如下

for (unsigned int i = 0; i < n; ++i)
    {
        fscanf(fp_1, "%lf %lf %lf", &x, &y, &z);
        //x = x * 1000; y = y * 1000; z = z * 1000;
        cloud_ptr->push_back(pcl::PointXYZ(0, y, z));
        boundary.push_back(osg::Vec2(y, z));
    }

    pcl::ModelCoefficients::Ptr coefficients_line(new pcl::ModelCoefficients);
    pcl::PointIndices::Ptr inliers_line(new pcl::PointIndices);
    pcl::SACSegmentation<pcl::PointXYZ> seg;//ransac进行直线识别
    seg.setOptimizeCoefficients(true);
    seg.setModelType(pcl::SACMODEL_LINE);
    seg.setMethodType(pcl::SAC_RANSAC);
    seg.setMaxIterations(100);
    seg.setDistanceThreshold(1);
    seg.setInputCloud(cloud_ptr);
    seg.segment(*inliers_line, *coefficients_line);

但当把cloud_ptr->push_back那一栏的代码修改后,代码如下,便可以正常识别

for (unsigned int i = 0; i < n; ++i)
    {
        fscanf(fp_1, "%lf %lf %lf", &x, &y, &z);
        //x = x * 1000; y = y * 1000; z = z * 1000;
        /*cloud_ptr->push_back(pcl::PointXYZ(0, y, z));*/
        if (i%2==0)
        {
            cloud_ptr->push_back(pcl::PointXYZ(0, y, z));
        }
        else
        {
            cloud_ptr->push_back(pcl::PointXYZ(0.002, y, z));
        }
        boundary.push_back(osg::Vec2(y, z));
    }

    pcl::ModelCoefficients::Ptr coefficients_line(new pcl::ModelCoefficients);
    pcl::PointIndices::Ptr inliers_line(new pcl::PointIndices);
    pcl::SACSegmentation<pcl::PointXYZ> seg;//ransac进行直线识别
    seg.setOptimizeCoefficients(true);
    seg.setModelType(pcl::SACMODEL_LINE);
    seg.setMethodType(pcl::SAC_RANSAC);
    seg.setMaxIterations(100);
    seg.setDistanceThreshold(1);
    seg.setInputCloud(cloud_ptr);
    seg.segment(*inliers_line, *coefficients_line);

区别就是让x的这维坐标不再是恒定的,便可以正常识别了,为什么会出现这种情况,求解惑

  • 写回答

2条回答 默认 最新

  • sjsjidbjksk 2021-09-30 10:32
    关注

    https://blog.csdn.net/m0_60960880/article/details/120562016 你好这是我的问题,可以帮我看一下吗

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog