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

关于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 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘