目录
1.txt文件介绍
txt格式是一种简单的文本文件格式,常用于存储点云数据的几何信息。它以每行一个点的形式,存储点的X、Y、Z坐标值,没有额外的属性信息。由于其简单性,txt格式易于创建、编辑和阅读,适用于快速查看和处理点云的几何数据。
txt格式文件由多行组成,每行表示一个点。每个点的X、Y、Z坐标值用空格或制表符分隔。文件中不包含文件头信息或其他元数据,只有纯粹的点云数据。
在上述示例中,每行代表一个点,包含该点的X、Y、Z坐标。这个文件包含了四个点,每个点都有三个坐标值。
2.txt文件读写
在pcl中并没有直接读取txt格式点云的函数,需要我们自定义实现txt格式的点云读写函数,以下是txt格式点云的读写函数和程序,可以直接使用。
#include <iostream>
#include <pcl/point_types.h>
#include <pcl/io/pcd_io.h>
using namespace std;
//读txt点云
void loadTxtCloud(std::string txtPath, pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud)
{
std::string line;
pcl::PointXYZ point;
std::ifstream ifs(txtPath);
while (getline(ifs, line))
{
std::stringstream ss(line);
ss >> point.x;
ss >> point.y;
ss >> point.z;
cloud.push_back(point);
}
ifs.close();
}
//写txt点云
void saveTxtCloud(std::string txtPath, pcl::PointCloud<pcl::PointXYZ>::Ptr & cloud)
{
std::ofstream ofs;
ofs.open(txtPath, std::ios::out);
for (int i = 0; i < cloud.points.size(); i++)
{
ofs << cloud.points[i].x << " "
<< cloud.points[i].y << " "
<< cloud.points[i].z << std::endl;
}
ofs.close();
}
int main(int argc, char** argv)
{
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>::Ptr);
loadTxtCloud("load_test.txt", *cloud);//读取txt文件
saveTxtCloud("save_test.txt", *cloud);//写入txt文件
return 0;
}