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
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
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
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
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
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
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 }