PCL实现读取las文件

 关于PCL部分的配置我就不加赘述了,本篇主要讲las文件的读取

这里附上已经编译好了的库

链接:https://pan.baidu.com/s/1ZPYNOWXQnhu2-bTHihjxpA 
提取码:CSXC

首先需要下载liblas的库

在PCL项目中属性-》配置属性-》VC++目录中配置:

在包含目录中包含该include

在库目录中引用lib

在PCL项目中属性-》配置属性-》链接器-》输入

附加依赖项中配置

到这里,关于laslib库的配置就已经完成了。现在将以下代码粘贴到.cpp文件中

#pragma warning(disable:4996)
#include <pcl\io\pcd_io.h>
#include <pcl\point_cloud.h>
#include <pcl\point_types.h>
#include <pcl\visualization\pcl_visualizer.h>
#include <liblas/liblas.hpp>
#include <iostream>
using namespace std;

void main()
{

	std::ifstream ifs("C:\\Users\\17616\\Documents\\Visual Studio 2015\\Projects\\PCLVisualizerOfficial\\5\\source\\ground.las", std::ios::in | std::ios::binary); // 打开las文件
	liblas::ReaderFactory f;
	liblas::Reader reader = f.CreateWithStream(ifs); // 读取las文件
//	qDebug() << "读取";
	unsigned long int nbPoints = reader.GetHeader().GetPointRecordsCount();//获取las数据点的个数
//	qDebug() << "获取点数量" << nbPoints;
	pcl::PointCloud<pcl::PointXYZRGB> cloud1;
	cloud1.width = nbPoints;	//保证与las数据点的个数一致	
	cloud1.height = 1;
	cloud1.is_dense = false;
	cloud1.points.resize(cloud1.width * cloud1.height);

	int i = 0;
	uint16_t r1, g1, b1;
	int r2, g2, b2;
	uint32_t rgb;
//	qDebug() << "开始加载点";
	while (reader.ReadNextPoint())
	{

		// 获取las数据的x,y,z信息
		cloud1.points[i].x = (reader.GetPoint().GetX());
		cloud1.points[i].y = (reader.GetPoint().GetY());
		cloud1.points[i].z = (reader.GetPoint().GetZ());

	}
//	qDebug() << "加载点完成";
//到这里cloud1就已经完全加载了las的数据。也可以创建viewer来显示点云。这里我将las文件转换为pcd文件保存
	pcl::io::savePCDFileASCII("pointcloud.pcd", cloud1);//存储为pcd类型文件
//	qDebug() << "导出pcd";
}

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值