本文主要是介绍点云TXT转化为pcd格式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
// changepcd.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"
#include <pcl/io/pcd_io.h>
#include<iostream>
using namespace std;
int numofPoints(char* fname){int n=0;int c=0;FILE *fp;fp = fopen(fname,"r");do{c = fgetc(fp);if(c == '\n'){++n;}}while(c != EOF);fclose(fp);return n;
}
int main()
{int n = 0; //n用来计文件中点个数 FILE *fp_1;fp_1 = fopen("cat.txt","r");n = numofPoints("cat.txt");//使用numofPoints函数计算文件中点个数std::cout << "there are "<<n<<" points in the file..." <<std::endl;//新建一个点云文件,然后将结构中获取的xyz值传递到点云指针cloud中。pcl::PointCloud<pcl::PointXYZ> cloud;cloud.width = n;cloud.height = 1;cloud.is_dense = false;cloud.points.resize (cloud.width * cloud.height);//将点云读入并赋给新建点云指针的xyz double x,y,z;int i = 0;while(3 ==fscanf(fp_1,"%lf,%lf,%lf\n",&x,&y,&z)){cout<<x<<" "<<y<<" "<<z<<endl;cloud.points[i].x = x;cloud.points[i].y = y;cloud.points[i].z = z;++i;}fclose(fp_1);//将点云指针指向的内容传给pcd文件pcl::io::savePCDFileASCII ("yulan_tree_01.pcd", cloud);std::cerr <<"Saved " << cloud.points.size () <<" data points to test_pcd.pcd." << std::endl;system("pause");return 0;
}
这篇关于点云TXT转化为pcd格式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!