sjsjidbjksk 2021-09-26 10:43 采纳率: 100%
浏览 19
已结题

RANSAC 我的设想是先提取平面,平面有边,从边中提取直线。到提取直线的时候就报错了。


我的设想是先提取平面,平面有边,从边中提取直线。。。。。到提取直线的时候就报错了。。。求助!!!!!!!!!!!!!!!!

// Create the segmentation object for the planar model and set all the parameters
  seg.setOptimizeCoefficients (true);  //选择模型系数是否需要优化
  seg.setModelType (pcl::SACMODEL_NORMAL_PLANE);  //平面模型
  seg.setNormalDistanceWeight (0.1);   //设置表面法线权重系数
  seg.setMethodType (pcl::SAC_RANSAC);  //分割方法
  seg.setMaxIterations (100);  //迭代次数
  seg.setDistanceThreshold (0.1);  //距离阈值,离散点到模型的距离
  seg.setInputCloud(cloud_filtered);
  //seg.setInputCloud (cloud);
  seg.setInputNormals (cloud_normals);
  // Obtain the plane inliers and coefficients
  seg.segment (*inliers_plane, *coefficients_plane);
  std::cerr << "Plane coefficients: " << *coefficients_plane << std::endl;

  // Extract the planar inliers from the input cloud
 extract.setInputCloud (cloud_filtered);
 // extract.setInputCloud(cloud);
  extract.setIndices (inliers_plane);
  extract.setNegative (false);  //



// Write the planar inliers to disk
  pcl::PointCloud<PointT>::Ptr cloud_plane (new pcl::PointCloud<PointT> ());
  extract.filter (*cloud_plane);
  std::cerr << "PointCloud representing the planar component: " << cloud_plane->points.size () << " data points." << std::endl;
  writer.write ("tiqubeizi_plane.pcd", *cloud_plane, false);

  //创建一个分割直线对象,设置参数
  seg.setOptimizeCoefficients(true);  //选择模型系数是否需要优化
  seg.setModelType(pcl::SACMODEL_LINE);
  seg.setNormalDistanceWeight(0.1);   //设置表面法线权重系数
  seg.setMethodType(pcl::SAC_RANSAC);  //分割方法
  seg.setMaxIterations(10);  //迭代次数
  seg.setDistanceThreshold(0.01);  //距离阈值,离散点到模型的距离
  seg.setInputCloud(cloud_plane);
  seg.setInputNormals(cloud_normals);
  seg.segment(*inliers_line, *coefficients_line);
  std::cerr << "Plane coefficients: " << *coefficients_line << std::endl;
  //提取直线内点
  extract.setInputCloud(cloud_plane);
  extract.setIndices(inliers_line);
  extract.setNegative(false);

  pcl::PointCloud<PointT>::Ptr cloud_line(new pcl::PointCloud<PointT>());
  extract.filter(*cloud_line);
  std::cerr << "PointCloud representing the planar component: " << cloud_line->points.size() << " data points." << std::endl;
  writer.write("tiqubeizi_line.pcd", *cloud_line, false);
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月4日
    • 创建了问题 9月26日

    悬赏问题

    • ¥30 为什么会失败呢,该如何调整
    • ¥50 如何在不能联网影子模式下的电脑解决usb锁
    • ¥20 服务器redhat5.8网络问题
    • ¥15 如何利用c++ MFC绘制复杂网络多层图
    • ¥20 要做柴油机燃烧室优化 需要保持压缩比不变 请问怎么用AVL fire ESE软件里面的 compensation volume 来使用补偿体积来保持压缩比不变
    • ¥15 python螺旋图像
    • ¥15 算能的sail库的运用
    • ¥15 'Content-Type': 'application/x-www-form-urlencoded' 请教 这种post请求参数,该如何填写??重点是下面那个冒号啊
    • ¥15 找代写python里的jango设计在线书店
    • ¥15 请教如何关于Msg文件解析