3D点云文件的下载+.pcd与.ply文件的格式转换

3D点云文件的下载+.pcd与.ply文件的格式转换

  • 3D点云常见模型
  • pcd与ply文件的之间的转换

3D点云常见模型

常见模型的下载地址链接:
http://www.cc.gatech.edu/projects/large_models/

pcd与ply文件的之间的转换

①.ply to .pcd
相关代码:

#include              //输入输出流头文件
#include      //打开关闭pcd类定义头文件
#include   //所有点类型定义头文件
#include    //打开关闭ply类定义头文件

int main(int argc, char** argv)
{
	pcl::PointCloud::Ptr cloud(new pcl::PointCloud);

	if (pcl::io::loadPLYFile("F://PCL online data//three//6//source//bunny.ply", *cloud) == -1) //加载文件
	{
		PCL_ERROR("Couldn't read file test_pcd.pcd \n");
		system("PAUSE");
		return (-1);
	}
	//显示点云数量
	std::cout << "point number: "
		<< cloud->width * cloud->height
		<< std::endl;

	//显示文件中各点数据
	/*
	for (size_t i = 0; i < cloud->points.size(); ++i)
		std::cout << "    " << cloud->points[i].x
		<< " " << cloud->points[i].y
		<< " " << cloud->points[i].z
		<< std::endl;
	*/
	std::string filename("bunny.pcd");   
	pcl::PCDWriter writer;
	writer.write("F://PCL online data//three//6//source//bunny.pcd", *cloud);  //保存文件

	system("PAUSE");
	return (0);
}

②.pcd to .ply

#include           //输入输出流头文件
#include    //打开关闭pcd类定义头文件
#include  //所有点类型定义头文件
#include    //打开关闭ply类定义头文件

int main(int argc, char** argv)
{
	pcl::PointCloud::Ptr cloud(new pcl::PointCloud);   

	if (pcl::io::loadPCDFile("F://PCL online data//three//6//source//test.pcd", *cloud) == -1) //加载文件
	{
		PCL_ERROR("Couldn't read file  \n");
		system("PAUSE");
		return (-1);
	}
	//显示点云数量
	std::cout << "point number: "
		<< cloud->width * cloud->height
		<< std::endl;

	//显示文件中各点数据
	/*
	for (size_t i = 0; i < cloud->points.size(); ++i)
		std::cout << "    " << cloud->points[i].x
		<< " " << cloud->points[i].y
		<< " " << cloud->points[i].z
		<< std::endl;
	*/
	std::string filename("test1.ply");
	pcl::PLYWriter writer;
	writer.write("F://PCL online data//three//6//source//test1.ply", *cloud);  //保存文件

	system("PAUSE");
	return (0);
}

两种文件的格式的转换程序,简洁又相通。只是更改了部分关键的语句就实现了。

你可能感兴趣的:(3D点云文件的下载+.pcd与.ply文件的格式转换)