PCL:读取ply,pcb格式文件显示效果

在实验和项目中点云数据的存储和展现的方式通常是ply文件,尤其是海量点云数据,但是在PCL程序中处理的常常是pcd文件,因此首先需要使用程序将ply文件转换为pcd文件,再读取pcb对象

#include 
#include 
#include 
#include 

#include 
#include 
#include 
#include 

#include
#include//pcd 读写类相关的头文件。
#include
#include //PCL中支持的点类型头文件。
int user_data;
using namespace std;

void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) {
	viewer.setBackgroundColor(1.0, 0.5, 1.0);   //设置背景颜色
}

int main()
{
	pcl::PointCloud::Ptr cloud(new pcl::PointCloud());//创建点云对象
	pcl::PolygonMesh mesh;
	vtkSmartPointer polydata = vtkSmartPointer::New();
	pcl::io::loadPolygonFilePLY("bunny.ply", mesh);									//PCL利用VTK的IO接口,可以直接读取stl,ply,obj等格式的三维点云数据,传给PolygonMesh对象
	pcl::io::mesh2vtk(mesh, polydata);												//将PolygonMesh对象转化为vtkPolyData对象
	pcl::io::vtkPolyDataToPointCloud(polydata, *cloud);								//获取点云
	pcl::io::savePCDFileASCII("bunny.pcd", *cloud);									//存储为pcb文件

	

	char strfilepath[256] = "bunny.pcd";
	if (-1 == pcl::io::loadPCDFile(strfilepath, *cloud)) {							//读取pcb格式文件
		cout << "error input!" << endl;
		return -1;
	}

	cout << cloud->points.size() << endl;											//点云里点规模
	pcl::visualization::CloudViewer viewer("Cloud Viewer");							  //创建可视化viewer对象

	viewer.showCloud(cloud);
	viewer.runOnVisualizationThreadOnce(viewerOneOff);
	system("pause");

	return 0;
}

 

你可能感兴趣的:(PCL)