今天刚开始使用PCL库,但是被这个数据导入的格式整懵了
- 记录一下PCL将PLY文件转换成PCD文件的方法吧
#include <iostream>
#include <pcl/common/io.h>
#include <pcl/point_cloud.h>
#include <pcl/point_types.h>
#include <pcl/PolygonMesh.h>
#include <vtkSmartPointer.h>
#include <vtkPolyData.h>
#include <pcl/io/pcd_io.h>
#include <pcl/io/vtk_lib_io.h>
#include <pcl\io\ply_io.h>
using namespace std;
//方法1
void ply2pcd_fun1()
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>());
pcl::PolygonMesh mesh;
vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::New();
pcl::io::loadPolygonFilePLY("bun000.ply", mesh);
pcl::io::mesh2vtk(mesh, polydata);
pcl::io::vtkPolyDataToPointCloud(polydata, *cloud);
pcl::io::savePCDFileASCII("bun000.pcd", *cloud);
}
//方法2
void ply2pcd_fun2()
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
if (-1 == pcl::io::loadPLYFile("bun000.ply", *cloud)) { //引用ply文件
cout << "error input!" << endl;
}
if (pcl::io::savePCDFile("bun000.pcd", *cloud) > 0)
{
std::cout << "finish!" << std::endl;
}
}
int main()
{
/*两种方法,任选一种即可*/
ply2pcd_fun1();
//ply2pcd_fun2();
return 0;
}