怎么使用OpenGL处理ply点云文件

本文介绍如何将含有rgba信息的ply点云文件转换为txt格式,以便于使用OpenGL进行显示、旋转、移动和光照操作。首先,通过将ply文件转化为txt文件,然后利用OpenGL读取并显示带有颜色信息的点云,同时实现了键盘和鼠标控制的交互功能。
摘要由CSDN通过智能技术生成

关键词:为rgba的ply文件

              txt点云文件含有颜色信息

思路:先将ply文件转换为txt点云文件。OpenGL读取显示txt点云,并实现旋转移动、键盘控制、光照等简单操作。

 

1.将ply文件转换为txt点云文件

一般的ply文件是可以用OpenGL直接读取的,但是ply点云文件尝试之后却不太顺利。

于是转而查如何读取ply点云文件,查到的结果是安装pcl。除了不小心装错位数外,用它来读取和显示ply文件倒是蛮方便的。但是在后面想实现光照模型的时候没有在pcl里找到合适的函数,总想着用OpenGL调节模型更方便。

于是最后将ply文件转换为txt文件。其中保存了ply文件里的xyz坐标和rgba坐标。

如何看ply文件里有什么信息呢?打开方式选写字板看一下它的header就好啦

以下为这个环节的代码:

运行前提是先去安装pcl的教程,推荐一份 http://gyshgx868.github.io/2018/03/06/PointCloud/pcl-install/

#include "stdafx.h"
#include <iostream>
#include <pcl/io/pcd_io.h>
#include <pcl/io/ply_io.h>
#include <pcl/console/print.h>
#include <pcl/console/parse.h>
#include <pcl/console/time.h>
#include <pcl/io/vtk_lib_io.h>
#include <pcl/io/vtk_io.h>
#include <vtkPolyData.h>
#include <vtkSmartPointer.h>
#include <pcl/visualization/cloud_viewer.h>  
using namespace pcl;
using namespace pcl::io;
using namespace pcl::console;
using namespace std;

int main()
{
	pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>());
	if (pcl::io::loadPLYFile("F:\\3D human model.ply", *cloud) == -1) //* load the file 
	{
		PCL_ERROR("Couldn't read the file \n");
		system("PAUSE");
		return (-1);
	}
	ofstream zos("F:\\shixiala.txt");  //包含rgba信息的txt点云
	for (size_t i = 0; i < cloud->points.size(); i++)
		zos << cloud->points[i].x << " " << cloud->points[i].y
		<< " " << cloud->points[i].z << " " << int(cloud->points[i].r) << " " << int(cloud->points[
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值