使用PCL将pcd文件转换为ply文件

直接上代码,代码很详细

#include <iostream>          //输入输出流头文件
#include <pcl/io/pcd_io.h>   //打开关闭pcd类定义头文件
#include <pcl/point_types.h> //所有点类型定义头文件
#include <pcl/io/ply_io.h>   //打开关闭ply类定义头文件
#include <pcl/point_types.h> //打印的头文件
#include <pcl/visualization/cloud_viewer.h>

int main(int argc, char** argv)
{
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
	//bunny.pcd //1258020693333_cluster_0_nxyz.pcd
	if (pcl::io::loadPCDFile<pcl::PointXYZ>("pcd-ply01/pcd-ply01/bunny.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("test02.ply");
	pcl::PLYWriter writer;    
	writer.write("pcd-ply01/pcd-ply01/test02.ply", *cloud);  //保存文件

	//pcl::PLYReader reader;
	pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); //创建一个点云数据
	//reader.read<pcl::PointXYZ>("C:/Users/xiaonan/Desktop/c-pcl/pcd-ply01/pcd-ply01/test02.ply", *cloud);

	pcl::visualization::CloudViewer viewer("Viewer"); //这里打开的只是原来的pcd文件,并不是转换之后的ply文件
	viewer.showCloud(cloud);
	
	system("PAUSE");
	return (0);
}

但需要注意的是:文件是转换成功了,但win10系统的3D查看器是打不开的,不过使用MeshLab可以打开。

参考资料:
[https://blog.csdn.net/weixin_42734533/article/details/101616343]
非常感谢大佬的文献资料!!!依次谨记自己的学习之路。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 猿与汪的秘密 设计师:白松林 返回首页