基于PCL由txt转化pcd格式

基于PCL由txt转化pcd格式

#include
#include
#include
#include
#include
#include
using namespace std;

int main()
{
	//定义一种类型表示TXT中xyz
	typedef struct TXT_Point_XYZ
	{
		double x;
		double y;
		double z;
		double a;
		double b;
		double c;
	}TOPOINT_XYZ;

	//读取txt文件
	int num_txt;
	FILE *fp_txt;
	TXT_Point_XYZ txt_points;
	vector my_vTxtPoints;
	fp_txt = fopen("55.asc", "r");

	if (fp_txt)
	{
		while (fscanf(fp_txt, "%lf %lf %lf %lf %lf %lf", &txt_points.x, &txt_points.y, &txt_points.z, &txt_points.a, &txt_points.b, &txt_points.c) != EOF)
		{//将点存入容器尾部
			my_vTxtPoints.push_back(txt_points);
		}
	}
	else
		cout << "读取txt文件失败" << endl;

	num_txt = my_vTxtPoints.size();

	//写入点云数据
	pcl::PointCloud ::Ptr cloud(new pcl::PointCloud);
	cloud->width = num_txt;
	cloud->height = 1;
	cloud->is_dense = false;
	cloud->points.resize(cloud->width*cloud->height);
	for (int i = 0; i < cloud->points.size(); ++i)
	{
		cloud->points[i].x = my_vTxtPoints[i].x;
		cloud->points[i].y = my_vTxtPoints[i].y;
		cloud->points[i].z = my_vTxtPoints[i].z;
	}
	pcl::io::savePCDFileASCII("55.pcd", *cloud);
	//cout << "从 txt_pcd.txt读取" << cloud->points.size() << "点写入txt_pcd.pcd" << endl;

	//打印出写入的点
	//cout << "_________________________________" << endl;
	//for (size_t i = 0; i < cloud->points.size(); ++i)
	//	cout << "    " << cloud->points[i].x
	//	<< " " << cloud->points[i].y
	//	<< " " << cloud->points[i].z << endl;

	return 0;
}

你可能感兴趣的:(三维点云学习过程,c++)