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); }
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 (); }