点云数据的读取(las、txt、xyz格式)

      主要实现las格式、txt格式、xyz格式点云文件的读取及显示

      (1)las点云数据直接使用编译好的LibLAs库进行读取

                        std::ifstream ifs;
                        std::ifstream ifs;
ifs.open(path, std::ios::in | std::ios::binary);
if (!ifs)
{
cout << "打开失败!" << endl;
}
liblas::ReaderFactory f;


liblas::Reader reader = f.CreateWithStream(ifs);
liblas::Header const& header = reader.GetHeader();
double maxX = header.GetMaxX();
double minX = header.GetMinX();
double maxY = header.GetMaxY();
double minY = header.GetMinY();
double maxZ = header.GetMaxZ();
double minZ = header.GetMinZ();

                         int n=header.GetPointRecordsCount();//获取总的点数

                  double x = 0, y = 0, z = 0;
while (reader.ReadNextPoint())//循环读取las文件中的点
{
liblas::Point const& laspoint = reader.GetPoint();
x = laspoint.GetX();
y = laspoint.GetY();
z = laspoint.GetZ();

}

                       ifs.close();

         (2)txt格式与xyz格式数据的读取,主要了解其数据结构就OK啦

                     txt格式数据一般每行有3列数据,分别为点的 x,y,z坐标,可以以空格、逗号等分隔,读取的时候注意区别就行;

                    xyz格式数据一般每行有6列数据,前3列分别为点的 x,y,z坐标,后3列为点的法向量,一般以空格分隔;

                 这两种数据读取代码比较简单就不做示范了!

你可能感兴趣的:(激光雷达)