QT(VS) Lastools点云的头文件解析和文件读写

一、导入LasTools库

参考博客1:QT中配置LASLib实现.las格式点云文件读取
参考博客2:LAS点云的读写以及投影信息的读写(LASlib)
参考博客3:点云:LAStools / LASlib 读写点云
LAS文件格式描述PDF下载:官方下载PDF
下载好编译过的LasTools并解压

  • .pro文件中添加
#导入LasTools库
INCLUDEPATH += D:\LAStools\include\LASlib //.cpp文件以及.h文件路径
LIBS        += -LD:\LAStools\lib\LASlib\Release\  //.lib文件路径,我用的是release
               -lLASlib //lib文件具体名字

+= 是不覆盖追加
-L是转译,后面是导入lib文件的文件夹路径
-l是转译,引入lib文件

  • .h或者.cpp文件中加入
#include <LASlib/lasreader.hpp>
#include <LASlib/laswriter.hpp>

二、LAS文件信息

LAS数据结构介绍

1、LAS文件的头文件信息以及对应的意思

1.1、常用的读取与写入的信息

//打印头文件信息
// 初始化 header
LASheader lasHeader = lasreader->header;
//x,y,z三个方向的偏移值
F64 x_offset = lasHeader.x_offset;
F64 y_offset = lasHeader.y_offset;
F64 z_offset = lasHeader.z_offset;
//x,y,z三个方向的比例尺因子
F64 x_scale_factor = lasHeader.x_scale_factor;
F64 y_scale_factor = lasHeader.y_scale_factor;
F64 z_scale_factor = lasHeader.z_scale_factor;
//点云数据x,y,z三个方向的的最大、最小值
F64 min_x = lasHeader.min_x;
F64 max_x = lasHeader.max_x;
F64 min_y = lasHeader.min_y;
F64 max_y = lasHeader.max_y;
F64 min_z = lasHeader.min_z;
F64 max_z = lasHeader.max_z;
//点数据格式ID,说明点数据的存储格式,0-10具体看PDF
U8 point_data_format = lasHeader.point_data_format;
//点数据记录区长度 和point_data_format 有关,具体大小看LAS规定
U16 point_data_record_length = lasHeader.point_data_record_length;
//点云数据的具体数量
U32 number_of_point_records = lasHeader.number_of_point_records;
//每个返回的总点记录数组
U32 number_of_points_by_return[5];
memcpy(number_of_points_by_return, lasHeader.number_of_points_by_return, sizeof(U32)*5);

//读取.las文件的版本号
//主
U8 version_major = lasHeader.version_major;
//副
U8 version_minor = lasHeader.version_minor;

坐标 = 采集值×比例因子(scale_factor)+偏移值(offset)。

1.2、写入需要注意的信息

写入时设置这个必须设置正确,下面为初始化的时候的大小,如有附加其他信息,如user_data_in_header请及时修改header_size offset_to_point_data

//部分只有1.4版本有,请看LAS标准,或者LASheader 类
//las文件的头文件大小,LAS1.4版本为375, LAS1.3为235,LAS1.2为227
//LAS1.4比1.3多140,LAS1.3比1.2多8
lasHeader.header_size = 375;
//从文件开始到第一个点存储数据位置的字节数,一般和上面header_size一样
lasHeader.offset_to_point_data = lasHeader.header_size;

h e a d e r − s i z e = ( o r i g i n ) h e a d e r − s i z e + u s e r − d a t a − i n − h e a d e r − s i z e header_{-}size = (origin) header_{-}size +user_{-}data_{-}in_{-}header_{-}size headersize=(origin)headersize+

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值