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

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

#include <iostream>
#include <pcl/visualization/cloud_viewer.h>
#include <pcl/common/io.h>
#include <pcl/point_cloud.h>

#include <pcl/PolygonMesh.h>
#include <vtkSmartPointer.h>
#include <vtkPolyData.h>
#include <pcl/io/vtk_lib_io.h>

#include<pcl/io/io.h>
#include<pcl/io/pcd_io.h>//pcd 读写类相关的头文件。
#include<pcl/io/ply_io.h>
#include<pcl/point_types.h> //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<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>());//创建点云对象
	pcl::PolygonMesh mesh;
	vtkSmartPointer<vtkPolyData> polydata = vtkSmartPointer<vtkPolyData>::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;
}

 

  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值