From a6f157968de0c217b81e3a28b9e29b914f26ea6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81rgio=20Agostinho?= Date: Tue, 11 Aug 2015 15:07:00 +0100 Subject: [PATCH 1/2] template implementation of pcl::io::load can now be used --- io/CMakeLists.txt | 1 + io/include/pcl/io/impl/file_io.hpp | 90 ++++++++++++++++++++++++++++++ io/src/file_io.cpp | 45 --------------- 3 files changed, 91 insertions(+), 45 deletions(-) create mode 100644 io/include/pcl/io/impl/file_io.hpp diff --git a/io/CMakeLists.txt b/io/CMakeLists.txt index 870d91b9d8c..72f9e44a96d 100644 --- a/io/CMakeLists.txt +++ b/io/CMakeLists.txt @@ -312,6 +312,7 @@ if(build) set(impl_incs "include/pcl/${SUBSYS_NAME}/impl/pcd_io.hpp" + "include/pcl/${SUBSYS_NAME}/impl/file_io.hpp" "include/pcl/${SUBSYS_NAME}/impl/lzf_image_io.hpp" "include/pcl/${SUBSYS_NAME}/impl/synchronized_queue.hpp" "include/pcl/${SUBSYS_NAME}/impl/point_cloud_image_extractors.hpp" diff --git a/io/include/pcl/io/impl/file_io.hpp b/io/include/pcl/io/impl/file_io.hpp new file mode 100644 index 00000000000..243fbddfdec --- /dev/null +++ b/io/include/pcl/io/impl/file_io.hpp @@ -0,0 +1,90 @@ +/* + * Software License Agreement (BSD License) + * + * Point Cloud Library (PCL) - www.pointclouds.org + * Copyright (c) 2013-, Open Perception, Inc. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the copyright holder(s) nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include +#include + +namespace pcl +{ + namespace io + { + template int + load (const std::string& file_name, pcl::PointCloud& cloud) + { + boost::filesystem::path p (file_name.c_str ()); + std::string extension = p.extension ().string (); + int result = -1; + if (extension == ".pcd") + result = pcl::io::loadPCDFile (file_name, cloud); + else if (extension == ".ply") + result = pcl::io::loadPLYFile (file_name, cloud); + else if (extension == ".ifs") + result = pcl::io::loadIFSFile (file_name, cloud); + else + { + PCL_ERROR ("[pcl::io::load] Don't know how to handle file with extension %s", extension.c_str ()); + result = -1; + } + return (result); + } + + template int + save (const std::string& file_name, const pcl::PointCloud& cloud) + { + boost::filesystem::path p (file_name.c_str ()); + std::string extension = p.extension ().string (); + int result = -1; + if (extension == ".pcd") + result = pcl::io::savePCDFile (file_name, cloud, true); + else if (extension == ".ply") + result = pcl::io::savePLYFile (file_name, cloud, true); + else if (extension == ".ifs") + result = pcl::io::saveIFSFile (file_name, cloud); + else + { + PCL_ERROR ("[pcl::io::save] Don't know how to handle file with extension %s", extension.c_str ()); + result = -1; + } + return (result); + } + } +} diff --git a/io/src/file_io.cpp b/io/src/file_io.cpp index c67e5b0a362..c55c8bbed23 100644 --- a/io/src/file_io.cpp +++ b/io/src/file_io.cpp @@ -43,51 +43,6 @@ #include #include -namespace pcl -{ - namespace io - { - template int - load (const std::string& file_name, pcl::PointCloud& cloud) - { - boost::filesystem::path p (file_name.c_str ()); - std::string extension = p.extension ().string (); - int result = -1; - if (extension == ".pcd") - result = pcl::io::loadPCDFile (file_name, cloud); - else if (extension == ".ply") - result = pcl::io::loadPLYFile (file_name, cloud); - else if (extension == ".ifs") - result = pcl::io::loadIFSFile (file_name, cloud); - else - { - PCL_ERROR ("[pcl::io::load] Don't know how to handle file with extension %s", extension.c_str ()); - result = -1; - } - return (result); - } - - template int - save (const std::string& file_name, const pcl::PointCloud& cloud) - { - boost::filesystem::path p (file_name.c_str ()); - std::string extension = p.extension ().string (); - int result = -1; - if (extension == ".pcd") - result = pcl::io::savePCDFile (file_name, cloud, true); - else if (extension == ".ply") - result = pcl::io::savePLYFile (file_name, cloud, true); - else if (extension == ".ifs") - result = pcl::io::saveIFSFile (file_name, cloud); - else - { - PCL_ERROR ("[pcl::io::save] Don't know how to handle file with extension %s", extension.c_str ()); - result = -1; - } - return (result); - } - } -} int pcl::io::load (const std::string& file_name, pcl::PCLPointCloud2& blob) From 9a18eed388c5e7e3380b7129f2fd0ffeedd14496 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81rgio=20Agostinho?= Date: Wed, 12 Aug 2015 00:30:18 +0100 Subject: [PATCH 2/2] moved pcl::io::save and pcl::io::load into auto_io --- io/CMakeLists.txt | 4 +- io/include/pcl/io/auto_io.h | 126 +++++++++++++ io/include/pcl/io/file_io.h | 70 -------- .../pcl/io/impl/{file_io.hpp => auto_io.hpp} | 18 +- io/src/auto_io.cpp | 169 ++++++++++++++++++ io/src/file_io.cpp | 130 -------------- 6 files changed, 310 insertions(+), 207 deletions(-) create mode 100644 io/include/pcl/io/auto_io.h rename io/include/pcl/io/impl/{file_io.hpp => auto_io.hpp} (91%) create mode 100644 io/src/auto_io.cpp diff --git a/io/CMakeLists.txt b/io/CMakeLists.txt index 72f9e44a96d..b64e6a3ed3d 100644 --- a/io/CMakeLists.txt +++ b/io/CMakeLists.txt @@ -234,6 +234,7 @@ if(build) src/hdl_grabber.cpp src/robot_eye_grabber.cpp src/file_io.cpp + src/auto_io.cpp src/io_exception.cpp ${VTK_IO_SOURCE} ${OPENNI_GRABBER_SOURCES} @@ -262,6 +263,7 @@ if(build) "include/pcl/${SUBSYS_NAME}/eigen.h" "include/pcl/${SUBSYS_NAME}/debayer.h" "include/pcl/${SUBSYS_NAME}/file_io.h" + "include/pcl/${SUBSYS_NAME}/auto_io.h" "include/pcl/${SUBSYS_NAME}/lzf.h" "include/pcl/${SUBSYS_NAME}/lzf_image_io.h" "include/pcl/${SUBSYS_NAME}/io.h" @@ -312,7 +314,7 @@ if(build) set(impl_incs "include/pcl/${SUBSYS_NAME}/impl/pcd_io.hpp" - "include/pcl/${SUBSYS_NAME}/impl/file_io.hpp" + "include/pcl/${SUBSYS_NAME}/impl/auto_io.hpp" "include/pcl/${SUBSYS_NAME}/impl/lzf_image_io.hpp" "include/pcl/${SUBSYS_NAME}/impl/synchronized_queue.hpp" "include/pcl/${SUBSYS_NAME}/impl/point_cloud_image_extractors.hpp" diff --git a/io/include/pcl/io/auto_io.h b/io/include/pcl/io/auto_io.h new file mode 100644 index 00000000000..3bdcf6c55ec --- /dev/null +++ b/io/include/pcl/io/auto_io.h @@ -0,0 +1,126 @@ +/* + * Software License Agreement (BSD License) + * + * Copyright (c) 2009, Willow Garage, Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the copyright holder(s) nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + * $Id$ + * + */ + +#ifndef PCL_IO_AUTO_IO_H_ +#define PCL_IO_AUTO_IO_H_ + +#include +#include +#include +#include +#include +#include +#include + +namespace pcl +{ + + namespace io + { + /** \brief Load a file into a PointCloud2 according to extension. + * \param[in] file_name the name of the file to load + * \param[out] blob the resultant pcl::PointCloud2 blob + * \ingroup io + */ + PCL_EXPORTS int + load (const std::string& file_name, pcl::PCLPointCloud2& blob); + + /** \brief Load a file into a template PointCloud type according to extension. + * \param[in] file_name the name of the file to load + * \param[out] cloud the resultant templated point cloud + * \ingroup io + */ + template int + load (const std::string& file_name, pcl::PointCloud& cloud); + + /** \brief Load a file into a PolygonMesh according to extension. + * \param[in] file_name the name of the file to load + * \param[out] mesh the resultant pcl::PolygonMesh + * \ingroup io + */ + PCL_EXPORTS int + load (const std::string& file_name, pcl::PolygonMesh& mesh); + + /** \brief Load a file into a TextureMesh according to extension. + * \param[in] file_name the name of the file to load + * \param[out] mesh the resultant pcl::TextureMesh + * \ingroup io + */ + PCL_EXPORTS int + load (const std::string& file_name, pcl::TextureMesh& mesh); + + /** \brief Save point cloud data to a binary file when available else to ASCII. + * \param[in] file_name the output file name + * \param[in] blob the point cloud data message + * \param[in] precision float precision when saving to ASCII files + * \ingroup io + */ + PCL_EXPORTS int + save (const std::string& file_name, const pcl::PCLPointCloud2& blob, unsigned precision = 5); + + /** \brief Save point cloud to a binary file when available else to ASCII. + * \param[in] file_name the output file name + * \param[in] cloud the point cloud + * \param[in] precision float precision when saving to ASCII files + * \ingroup io + */ + template int + save (const std::string& file_name, const pcl::PointCloud& cloud, unsigned precision = 5); + + /** \brief Saves a TextureMesh to a binary file when available else to ASCII. + * \param[in] file_name the name of the file to write to disk + * \param[in] tex_mesh the texture mesh to save + * \param[in] precision float precision when saving to ASCII files + * \ingroup io + */ + PCL_EXPORTS int + save (const std::string &file_name, const pcl::TextureMesh &tex_mesh, unsigned precision = 5); + + /** \brief Saves a PolygonMesh to a binary file when available else to ASCII. + * \param[in] file_name the name of the file to write to disk + * \param[in] mesh the polygonal mesh to save + * \param[in] precision float precision when saving to ASCII files + * \ingroup io + */ + PCL_EXPORTS int + save (const std::string &file_name, const pcl::PolygonMesh &mesh, unsigned precision = 5); + } +} + +#include + +#endif //#ifndef PCL_IO_AUTO_IO_H_ diff --git a/io/include/pcl/io/file_io.h b/io/include/pcl/io/file_io.h index 79aba9391a6..02c00ddb183 100644 --- a/io/include/pcl/io/file_io.h +++ b/io/include/pcl/io/file_io.h @@ -390,76 +390,6 @@ namespace pcl fields_count * sizeof (uint8_t)], reinterpret_cast (&value), sizeof (uint8_t)); } - namespace io - { - /** \brief Load a file into a PointCloud2 according to extension. - * \param[in] file_name the name of the file to load - * \param[out] blob the resultant pcl::PointCloud2 blob - * \ingroup io - */ - PCL_EXPORTS int - load (const std::string& file_name, pcl::PCLPointCloud2& blob); - - /** \brief Load a file into a template PointCloud type according to extension. - * \param[in] file_name the name of the file to load - * \param[out] cloud the resultant templated point cloud - * \ingroup io - */ - template int - load (const std::string& file_name, pcl::PointCloud& cloud); - - /** \brief Load a file into a PolygonMesh according to extension. - * \param[in] file_name the name of the file to load - * \param[out] mesh the resultant pcl::PolygonMesh - * \ingroup io - */ - PCL_EXPORTS int - load (const std::string& file_name, pcl::PolygonMesh& mesh); - - /** \brief Load a file into a TextureMesh according to extension. - * \param[in] file_name the name of the file to load - * \param[out] mesh the resultant pcl::TextureMesh - * \ingroup io - */ - PCL_EXPORTS int - load (const std::string& file_name, pcl::TextureMesh& mesh); - - /** \brief Save point cloud data to a binary file when available else to ASCII. - * \param[in] file_name the output file name - * \param[in] blob the point cloud data message - * \param[in] precision float precision when saving to ASCII files - * \ingroup io - */ - PCL_EXPORTS int - save (const std::string& file_name, const pcl::PCLPointCloud2& blob, unsigned precision = 5); - - /** \brief Save point cloud to a binary file when available else to ASCII. - * \param[in] file_name the output file name - * \param[in] cloud the point cloud - * \param[in] precision float precision when saving to ASCII files - * \ingroup io - */ - template int - save (const std::string& file_name, const pcl::PointCloud& cloud, unsigned precision = 5); - - /** \brief Saves a TextureMesh to a binary file when available else to ASCII. - * \param[in] file_name the name of the file to write to disk - * \param[in] tex_mesh the texture mesh to save - * \param[in] precision float precision when saving to ASCII files - * \ingroup io - */ - PCL_EXPORTS int - save (const std::string &file_name, const pcl::TextureMesh &tex_mesh, unsigned precision = 5); - - /** \brief Saves a PolygonMesh to a binary file when available else to ASCII. - * \param[in] file_name the name of the file to write to disk - * \param[in] mesh the polygonal mesh to save - * \param[in] precision float precision when saving to ASCII files - * \ingroup io - */ - PCL_EXPORTS int - save (const std::string &file_name, const pcl::PolygonMesh &mesh, unsigned precision = 5); - } } #endif //#ifndef PCL_IO_FILE_IO_H_ diff --git a/io/include/pcl/io/impl/file_io.hpp b/io/include/pcl/io/impl/auto_io.hpp similarity index 91% rename from io/include/pcl/io/impl/file_io.hpp rename to io/include/pcl/io/impl/auto_io.hpp index 243fbddfdec..ab82de93c5e 100644 --- a/io/include/pcl/io/impl/file_io.hpp +++ b/io/include/pcl/io/impl/auto_io.hpp @@ -2,7 +2,7 @@ * Software License Agreement (BSD License) * * Point Cloud Library (PCL) - www.pointclouds.org - * Copyright (c) 2013-, Open Perception, Inc. + * Copyright (c) 2010-2011, Willow Garage, Inc. * * All rights reserved. * @@ -16,7 +16,7 @@ * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials provided * with the distribution. - * * Neither the name of the copyright holder(s) nor the names of its + * * Neither the name of Willow Garage, Inc. nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. * @@ -33,15 +33,19 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. * + * $Id$ + * */ -#include -#include +#ifndef PCL_IO_AUTO_IO_IMPL_H_ +#define PCL_IO_AUTO_IO_IMPL_H_ + +// #include +// #include #include #include #include -#include -#include +// #include namespace pcl { @@ -88,3 +92,5 @@ namespace pcl } } } + +#endif //PCL_IO_AUTO_IO_IMPL_H_ \ No newline at end of file diff --git a/io/src/auto_io.cpp b/io/src/auto_io.cpp new file mode 100644 index 00000000000..926fb6d8b4c --- /dev/null +++ b/io/src/auto_io.cpp @@ -0,0 +1,169 @@ +/* + * Software License Agreement (BSD License) + * + * Point Cloud Library (PCL) - www.pointclouds.org + * Copyright (c) 2013-, Open Perception, Inc. + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of the copyright holder(s) nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + */ + +#include +#include +#include +#include +#include +#include +#include + + +int +pcl::io::load (const std::string& file_name, pcl::PCLPointCloud2& blob) +{ + boost::filesystem::path p (file_name.c_str ()); + std::string extension = p.extension ().string (); + int result = -1; + if (extension == ".pcd") + result = pcl::io::loadPCDFile (file_name, blob); + else if (extension == ".ply") + result = pcl::io::loadPLYFile (file_name, blob); + else if (extension == ".ifs") + result = pcl::io::loadIFSFile (file_name, blob); + else if (extension == ".obj") + result = pcl::io::loadOBJFile (file_name, blob); + else + { + PCL_ERROR ("[pcl::io::load] Don't know how to handle file with extension %s", extension.c_str ()); + result = -1; + } + return (result); +} + +int +pcl::io::load (const std::string& file_name, pcl::PolygonMesh& mesh) +{ + boost::filesystem::path p (file_name.c_str ()); + std::string extension = p.extension ().string (); + int result = -1; + if (extension == ".ply") + result = pcl::io::loadPLYFile (file_name, mesh); + else if (extension == ".ifs") + result = pcl::io::loadIFSFile (file_name, mesh); + else if (extension == ".obj") + result = pcl::io::loadOBJFile (file_name, mesh); + else + { + PCL_ERROR ("[pcl::io::load] Don't know how to handle file with extension %s", extension.c_str ()); + result = -1; + } + return (result); +} + +int +pcl::io::load (const std::string& file_name, pcl::TextureMesh& mesh) +{ + boost::filesystem::path p (file_name.c_str ()); + std::string extension = p.extension ().string (); + int result = -1; + if (extension == ".obj") + result = pcl::io::loadOBJFile (file_name, mesh); + else + { + PCL_ERROR ("[pcl::io::load] Don't know how to handle file with extension %s", extension.c_str ()); + result = -1; + } + return (result); +} + +int +pcl::io::save (const std::string& file_name, const pcl::PCLPointCloud2& blob, unsigned precision) +{ + boost::filesystem::path p (file_name.c_str ()); + std::string extension = p.extension ().string (); + int result = -1; + if (extension == ".pcd") + { + Eigen::Vector4f origin = Eigen::Vector4f::Zero (); + Eigen::Quaternionf orientation = Eigen::Quaternionf::Identity (); + result = pcl::io::savePCDFile (file_name, blob, origin, orientation, true); + } + else if (extension == ".ply") + { + Eigen::Vector4f origin = Eigen::Vector4f::Zero (); + Eigen::Quaternionf orientation = Eigen::Quaternionf::Identity (); + result = pcl::io::savePLYFile (file_name, blob, origin, orientation, true); + } + else if (extension == ".ifs") + result = pcl::io::saveIFSFile (file_name, blob); + else if (extension == ".vtk") + result = pcl::io::saveVTKFile (file_name, blob, precision); + else + { + PCL_ERROR ("[pcl::io::save] Don't know how to handle file with extension %s", extension.c_str ()); + result = -1; + } + return (result); +} + +int +pcl::io::save (const std::string &file_name, const pcl::TextureMesh &tex_mesh, unsigned precision) +{ + boost::filesystem::path p (file_name.c_str ()); + std::string extension = p.extension ().string (); + int result = -1; + if (extension == ".obj") + result = pcl::io::saveOBJFile (file_name, tex_mesh, precision); + else + { + PCL_ERROR ("[pcl::io::save] Don't know how to handle file with extension %s", extension.c_str ()); + result = -1; + } + return (result); +} + +int +pcl::io::save (const std::string &file_name, const pcl::PolygonMesh &poly_mesh, unsigned precision) +{ + boost::filesystem::path p (file_name.c_str ()); + std::string extension = p.extension ().string (); + int result = -1; + if (extension == ".ply") + result = pcl::io::savePLYFileBinary (file_name, poly_mesh); + else if (extension == ".obj") + result = pcl::io::saveOBJFile (file_name, poly_mesh, precision); + else if (extension == ".vtk") + result = pcl::io::saveVTKFile (file_name, poly_mesh, precision); + else + { + PCL_ERROR ("[pcl::io::save] Don't know how to handle file with extension %s", extension.c_str ()); + result = -1; + } + return (result); +} diff --git a/io/src/file_io.cpp b/io/src/file_io.cpp index c55c8bbed23..6db63f2cf72 100644 --- a/io/src/file_io.cpp +++ b/io/src/file_io.cpp @@ -36,134 +36,4 @@ */ #include -#include -#include -#include -#include -#include -#include - -int -pcl::io::load (const std::string& file_name, pcl::PCLPointCloud2& blob) -{ - boost::filesystem::path p (file_name.c_str ()); - std::string extension = p.extension ().string (); - int result = -1; - if (extension == ".pcd") - result = pcl::io::loadPCDFile (file_name, blob); - else if (extension == ".ply") - result = pcl::io::loadPLYFile (file_name, blob); - else if (extension == ".ifs") - result = pcl::io::loadIFSFile (file_name, blob); - else if (extension == ".obj") - result = pcl::io::loadOBJFile (file_name, blob); - else - { - PCL_ERROR ("[pcl::io::load] Don't know how to handle file with extension %s", extension.c_str ()); - result = -1; - } - return (result); -} - -int -pcl::io::load (const std::string& file_name, pcl::PolygonMesh& mesh) -{ - boost::filesystem::path p (file_name.c_str ()); - std::string extension = p.extension ().string (); - int result = -1; - if (extension == ".ply") - result = pcl::io::loadPLYFile (file_name, mesh); - else if (extension == ".ifs") - result = pcl::io::loadIFSFile (file_name, mesh); - else if (extension == ".obj") - result = pcl::io::loadOBJFile (file_name, mesh); - else - { - PCL_ERROR ("[pcl::io::load] Don't know how to handle file with extension %s", extension.c_str ()); - result = -1; - } - return (result); -} - -int -pcl::io::load (const std::string& file_name, pcl::TextureMesh& mesh) -{ - boost::filesystem::path p (file_name.c_str ()); - std::string extension = p.extension ().string (); - int result = -1; - if (extension == ".obj") - result = pcl::io::loadOBJFile (file_name, mesh); - else - { - PCL_ERROR ("[pcl::io::load] Don't know how to handle file with extension %s", extension.c_str ()); - result = -1; - } - return (result); -} - -int -pcl::io::save (const std::string& file_name, const pcl::PCLPointCloud2& blob, unsigned precision) -{ - boost::filesystem::path p (file_name.c_str ()); - std::string extension = p.extension ().string (); - int result = -1; - if (extension == ".pcd") - { - Eigen::Vector4f origin = Eigen::Vector4f::Zero (); - Eigen::Quaternionf orientation = Eigen::Quaternionf::Identity (); - result = pcl::io::savePCDFile (file_name, blob, origin, orientation, true); - } - else if (extension == ".ply") - { - Eigen::Vector4f origin = Eigen::Vector4f::Zero (); - Eigen::Quaternionf orientation = Eigen::Quaternionf::Identity (); - result = pcl::io::savePLYFile (file_name, blob, origin, orientation, true); - } - else if (extension == ".ifs") - result = pcl::io::saveIFSFile (file_name, blob); - else if (extension == ".vtk") - result = pcl::io::saveVTKFile (file_name, blob, precision); - else - { - PCL_ERROR ("[pcl::io::save] Don't know how to handle file with extension %s", extension.c_str ()); - result = -1; - } - return (result); -} - -int -pcl::io::save (const std::string &file_name, const pcl::TextureMesh &tex_mesh, unsigned precision) -{ - boost::filesystem::path p (file_name.c_str ()); - std::string extension = p.extension ().string (); - int result = -1; - if (extension == ".obj") - result = pcl::io::saveOBJFile (file_name, tex_mesh, precision); - else - { - PCL_ERROR ("[pcl::io::save] Don't know how to handle file with extension %s", extension.c_str ()); - result = -1; - } - return (result); -} - -int -pcl::io::save (const std::string &file_name, const pcl::PolygonMesh &poly_mesh, unsigned precision) -{ - boost::filesystem::path p (file_name.c_str ()); - std::string extension = p.extension ().string (); - int result = -1; - if (extension == ".ply") - result = pcl::io::savePLYFileBinary (file_name, poly_mesh); - else if (extension == ".obj") - result = pcl::io::saveOBJFile (file_name, poly_mesh, precision); - else if (extension == ".vtk") - result = pcl::io::saveVTKFile (file_name, poly_mesh, precision); - else - { - PCL_ERROR ("[pcl::io::save] Don't know how to handle file with extension %s", extension.c_str ()); - result = -1; - } - return (result); -}