Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039 #include <pcl/io/pcd_io.h>
00040 #include <pcl/io/vtk_io.h>
00041 #include <pcl/console/print.h>
00042 #include <pcl/console/parse.h>
00043 #include <pcl/console/time.h>
00044
00045 using namespace pcl;
00046 using namespace pcl::io;
00047 using namespace pcl::console;
00048
00049 void
00050 printHelp (int, char **argv)
00051 {
00052 print_error ("Syntax is: %s input.pcd output.vtk\n", argv[0]);
00053 }
00054
00055 bool
00056 loadCloud (const std::string &filename, sensor_msgs::PointCloud2 &cloud)
00057 {
00058 TicToc tt;
00059 print_highlight ("Loading "); print_value ("%s ", filename.c_str ());
00060
00061 tt.tic ();
00062 if (loadPCDFile (filename, cloud) < 0)
00063 return (false);
00064 print_info ("[done, "); print_value ("%g", tt.toc ()); print_info (" ms : "); print_value ("%d", cloud.width * cloud.height); print_info (" points]\n");
00065 print_info ("Available dimensions: "); print_value ("%s\n", pcl::getFieldsList (cloud).c_str ());
00066
00067 return (true);
00068 }
00069
00070 void
00071 saveCloud (const std::string &filename, const sensor_msgs::PointCloud2 &cloud)
00072 {
00073 TicToc tt;
00074 tt.tic ();
00075
00076 print_highlight ("Saving "); print_value ("%s ", filename.c_str ());
00077
00078 saveVTKFile (filename, cloud);
00079
00080 print_info ("[done, "); print_value ("%g", tt.toc ()); print_info (" ms : "); print_value ("%d", cloud.width * cloud.height); print_info (" points]\n");
00081 }
00082
00083
00084 int
00085 main (int argc, char** argv)
00086 {
00087 print_info ("Convert a PCD file to VTK format. For more information, use: %s -h\n", argv[0]);
00088
00089 if (argc < 3)
00090 {
00091 printHelp (argc, argv);
00092 return (-1);
00093 }
00094
00095
00096 std::vector<int> pcd_file_indices = parse_file_extension_argument (argc, argv, ".pcd");
00097 std::vector<int> vtk_file_indices = parse_file_extension_argument (argc, argv, ".vtk");
00098 if (pcd_file_indices.size () != 1 || vtk_file_indices.size () != 1)
00099 {
00100 print_error ("Need one input PCD file and one output VTK file.\n");
00101 return (-1);
00102 }
00103
00104
00105 sensor_msgs::PointCloud2 cloud;
00106 if (!loadCloud (argv[pcd_file_indices[0]], cloud))
00107 return (-1);
00108
00109
00110 saveCloud (argv[vtk_file_indices[0]], cloud);
00111 }
00112