如下代码可视,可批量将ply文件转成pcd文件,具体路径需要自己更换:
//main.cpp
#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/point_types.h>
using namespace pcl;
using namespace pcl::io;
int main (int argc, char** argv)
{
pcl::PLYReader reader;
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZRGBA>);
std::string pathname = "../ply/Apple/";
std::string pathname1 = "../pcd/Apple/";
for(int i = 0;i < 10;i++){
// PointCloudT::Ptr cloud_in (new PointCloudT), cloud_out (new PointCloudT);
std::string ply_cloud = pathname + "cloud_image_0000" + boost::to_string(i) + ".ply";
std::string pcd_cloud = pathname1 + boost::to_string(i) + ".pcd";
// pcl::io::loadPCDFile<pcl::PointXYZ>(pcd_cloud1,*cloud_in);
reader.read<pcl::PointXYZRGBA>(ply_cloud, *cloud);
pcl::io::savePCDFile(pcd_cloud, *cloud );
}
for(int i = 10;i < 100;i++){
// PointCloudT::Ptr cloud_in (new PointCloudT), cloud_out (new PointCloudT);
std::string ply_cloud = pathname + "cloud_image_000" + boost::to_string(i) + ".ply";
std::string pcd_cloud = pathname1 + boost::to_string(i) + ".pcd";
// pcl::io::loadPCDFile<pcl::PointXYZ>(pcd_cloud1,*cloud_in);
reader.read<pcl::PointXYZRGBA>(ply_cloud, *cloud);
pcl::io::savePCDFile(pcd_cloud, *cloud );
}
return 0;
}
CMakeList.txt文件如下:
#CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
project(ply_to_pcd)
set(CMAKE_CXX_STANDARD 11)
find_package(PCL 1.7 REQUIRED)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(ply2pcd ply2pcd.cpp)
target_link_libraries(ply2pcd ${PCL_LIBRARIES})
如若对您有帮助,还望留下您的赞!