conditional_removal.cpp
Go to the documentation of this file.
00001 #include <iostream>
00002 #include <pcl/point_types.h>
00003 #include <pcl/filters/conditional_removal.h>
00004 
00005 int
00006  main (int argc, char** argv)
00007 {
00008   pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>);
00009   pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_filtered (new pcl::PointCloud<pcl::PointXYZ>);
00010 
00011   // Fill in the cloud data
00012   cloud->width  = 5;
00013   cloud->height = 1;
00014   cloud->points.resize (cloud->width * cloud->height);
00015 
00016   for (size_t i = 0; i < cloud->points.size (); ++i)
00017   {
00018     cloud->points[i].x = 1024 * rand () / (RAND_MAX + 1.0f);
00019     cloud->points[i].y = 1024 * rand () / (RAND_MAX + 1.0f);
00020     cloud->points[i].z = 1024 * rand () / (RAND_MAX + 1.0f);
00021   }
00022 
00023   std::cerr << "Cloud before filtering: " << std::endl;
00024   for (size_t i = 0; i < cloud->points.size (); ++i)
00025     std::cerr << "    " << cloud->points[i].x << " "
00026                         << cloud->points[i].y << " "
00027                         << cloud->points[i].z << std::endl;
00028   // build the condition
00029   pcl::ConditionAnd<pcl::PointXYZ>::Ptr range_cond (new
00030                   pcl::ConditionAnd<pcl::PointXYZ> ());
00031   range_cond->addComparison (pcl::FieldComparison<pcl::PointXYZ>::ConstPtr (new
00032       pcl::FieldComparison<pcl::PointXYZ> ("z", pcl::ComparisonOps::GT, 0.0)));
00033   range_cond->addComparison (pcl::FieldComparison<pcl::PointXYZ>::ConstPtr (new
00034       pcl::FieldComparison<pcl::PointXYZ> ("z", pcl::ComparisonOps::LT, 0.8)));
00035 
00036   // build the filter
00037   pcl::ConditionalRemoval<pcl::PointXYZ> condrem (range_cond);
00038   condrem.setInputCloud (cloud);
00039   condrem.setKeepOrganized(true);
00040 
00041   // apply filter
00042   condrem.filter (*cloud_filtered);
00043 
00044   // display pointcloud after filtering
00045   std::cerr << "Cloud after filtering: " << std::endl;
00046   for (size_t i = 0; i < cloud_filtered->points.size (); ++i)
00047     std::cerr << "    " << cloud_filtered->points[i].x << " "
00048                         << cloud_filtered->points[i].y << " "
00049                         << cloud_filtered->points[i].z << std::endl;
00050   return (0);
00051 }


pcl
Author(s): Open Perception
autogenerated on Wed Aug 26 2015 15:22:52