void process()
  {
    if (!cloud_) return;

    PlanarPolygonVector planar_polygons;
    rpe_.plane_extraction_ptr->setInputCloud(cloud_);
    MEASURE_RUNTIME(rpe_.plane_extraction_ptr->extract(planar_polygons), "Plane extraction");

    std::cout << "Number of planes extracted: " << planar_polygons.size() << std::endl;
    for (const auto& planar_polygon : planar_polygons)
    {
      std::cout << "---\n";
      std::cout << "Points in contour: " << planar_polygon.getContour().size() << std::endl;
      std::cout << "Plane coefficients:\n" << planar_polygon.getCoefficients() << std::endl;
    }

    viewer_.removeAllPointClouds(0);
    viewer_.removeAllShapes(0);

    displayCloud();

    if (rpe_.plane_normal_ptr)
      displayNormal(*rpe_.plane_normal_ptr);

    displayPlanarPolygons(planar_polygons);
  }
    void process()
    {
      PlanarPolygonVector planar_polygons;

      pe_->setInputCloud(cloud_);

      MEASURE_RUNTIME(pe_->extract(planar_polygons), "Plane extraction");

      std::cout << "Number of planes extracted: " << planar_polygons.size() << std::endl;
      for (const auto& planar_polygon : planar_polygons)
      {
        std::cout << "---\n";
        std::cout << "Points in contour: " << planar_polygon.getContour().size() << std::endl;
        std::cout << "Plane coefficients:\n" << planar_polygon.getCoefficients() << std::endl;
      }

      viewer_.removeAllPointClouds(0);
      viewer_.removeAllShapes(0);

      pcl::visualization::PointCloudColorHandlerCustom<PointT> single_color(cloud_, 0, 255, 0);
      viewer_.addPointCloud<PointT>(cloud_, single_color, "cloud");

      if (plane_normal_)
        displayNormal(*plane_normal_);

      displayPlanarPolygons(planar_polygons);
    }
Beispiel #3
0
int  main()
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_ptr1(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PointCloud<pcl::PointXYZ>::Ptr segmented_cloud(new pcl::PointCloud<pcl::PointXYZ>);
//load point cloud
loadcloud(cloud_ptr);

pcl::PointCloud <pcl::Normal>::Ptr normals(new pcl::PointCloud <pcl::Normal>);

//calculate the normal of the point cloud.
NormalCalculation(cloud_ptr,normals);
//display point cloud.
displaycloud(cloud_ptr);
//display the normal of the point cloud.
displayNormal(cloud_ptr, normals);
//segmentation by region growing method.
segmented_cloud=RegionGrowingSegmentation(cloud_ptr,normals);
//display the segmented the cloud.
displaycloud(segmented_cloud);
return 0;

}
void
ShapeMarker::displayNormalCB (const visualization_msgs::InteractiveMarkerFeedbackConstPtr& feedback)
{

  interactive_markers::MenuHandler::CheckState check_state;

  menu_handler_.getCheckState (feedback->menu_entry_id, check_state);
  if (check_state == interactive_markers::MenuHandler::UNCHECKED)
  {
    //ROS_INFO(" entry state changed ");
    menu_handler_.setCheckState (feedback->menu_entry_id, interactive_markers::MenuHandler::CHECKED);

    displayNormal();
  }
  else if (check_state == interactive_markers::MenuHandler::CHECKED)
  {
    //ROS_INFO(" entry state changed ");
    menu_handler_.setCheckState (feedback->menu_entry_id, interactive_markers::MenuHandler::UNCHECKED);
    hideNormal(1);
  }
  menu_handler_.reApply (*im_server_);
  im_server_->applyChanges ();

}