test_filters.cpp
Go to the documentation of this file.
00001 #include "filters.h"
00002 
00003 #include <string>
00004 #include <pcl/console/parse.h>
00005 #include <pcl/io/pcd_io.h>
00006 #include <pcl/visualization/pcl_visualizer.h>
00007 
00008 int 
00009 main (int argc, char ** argv)
00010 {
00011   if (argc < 2) 
00012   {
00013     pcl::console::print_info ("Syntax is: %s input.pcd <options>\n", argv[0]);
00014     pcl::console::print_info ("  where options are:\n");
00015     pcl::console::print_info ("    -t min_depth,max_depth  ............... Threshold depth\n");
00016     pcl::console::print_info ("    -d leaf_size  ......................... Downsample\n");
00017     pcl::console::print_info ("    -r radius,min_neighbors ............... Radius outlier removal\n");
00018     pcl::console::print_info ("    -s output.pcd ......................... Save output\n");
00019     return (1);
00020   }
00021 
00022   // Load the input file
00023   PointCloudPtr cloud (new PointCloud);
00024   pcl::io::loadPCDFile (argv[1], *cloud);
00025   pcl::console::print_info ("Loaded %s (%zu points)\n", argv[1], cloud->size ());
00026 
00027   // Threshold depth
00028   double min_depth, max_depth;
00029   bool threshold_depth = pcl::console::parse_2x_arguments (argc, argv, "-t", min_depth, max_depth) > 0;
00030   if (threshold_depth)
00031   {
00032     size_t n = cloud->size ();
00033     cloud = thresholdDepth (cloud, min_depth, max_depth);
00034     pcl::console::print_info ("Eliminated %zu points outside depth limits\n", n - cloud->size ());
00035   }
00036 
00037   // Downsample and threshold depth
00038   double leaf_size;
00039   bool downsample_cloud = pcl::console::parse_argument (argc, argv, "-d", leaf_size) > 0;
00040   if (downsample_cloud)
00041   {
00042     size_t n = cloud->size ();
00043     cloud = downsample (cloud, leaf_size);
00044     pcl::console::print_info ("Downsampled from %zu to %zu points\n", n, cloud->size ());
00045   }
00046 
00047   // Remove outliers
00048   double radius, min_neighbors;
00049   bool remove_outliers = pcl::console::parse_2x_arguments (argc, argv, "-r", radius, min_neighbors) > 0;
00050   if (remove_outliers)
00051   {
00052     size_t n = cloud->size ();
00053     cloud = removeOutliers (cloud, radius, (int)min_neighbors);
00054     pcl::console::print_info ("Removed %zu outliers\n", n - cloud->size ());
00055   }
00056 
00057   // Save output
00058   std::string output_filename;
00059   bool save_cloud = pcl::console::parse_argument (argc, argv, "-s", output_filename) > 0;
00060   if (save_cloud)
00061   {
00062     pcl::io::savePCDFile (output_filename, *cloud);
00063     pcl::console::print_info ("Saved result as %s\n", output_filename.c_str ());
00064   }
00065   // Or visualize the result
00066   else
00067   {
00068     pcl::console::print_info ("Starting visualizer... Close window to exit.\n");
00069     pcl::visualization::PCLVisualizer vis;
00070     vis.addPointCloud (cloud);
00071     vis.resetCamera ();
00072     vis.spin ();
00073   }
00074 
00075   return (0);
00076 }


pcl
Author(s): Open Perception
autogenerated on Mon Oct 6 2014 03:18:16