点云txt格式转pcd格式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013832676/article/details/51704516

之前整理过一个版本,但是使用了结构体,前前后后略显复杂,并且在xcode中运行的时候,面对较大文件特别容易出现内存分配错误,以下内容进行了精简和简化,在配置安装了pcl点云库的project下,可以直接饮用以下代码。


//计算txt点中的个数的方法实现

int numofPoints(char* fname){

    int n=0;

    int c=0;

    FILE *fp;

    fp = fopen(fname,"r");

    do{

        c = fgetc(fp);

        if(c == '\n'){

扫描二维码关注公众号,回复: 3103707 查看本文章

            ++n;

        }

    }

    while(c != EOF);

    fclose(fp);

    return n;

}


//以下是将txt中点云转成pcd的fuction

void txt2pcd(){  

    

    int n = 0; //n用来计文件中点个数    

    

    FILE *fp_1;

    fp_1 = fopen("tree_01.txt","r");

    n = numofPoints("yulan_tree_01.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;

    

}


*********************************************************************************************************

*********************************************************************************************************

fscanf函数的格式化输出当中,对应的格式化输出类型极容易出现问题,在xcode当中注意下面的问题。    

    FILE *fp_2 = fopen("data.txt","r");

    if(fp_2){

        char a[10]; //取字符串需要定义为一个字符数组,若定义为string类型变量或者是定义一个字符数组都容易出内存问题

        int d = 0;

        fscanf(fp_2, "%s %d\n",a,&d);


        cout<<a<<d<<endl;

        }

    fclose(fp_2);


猜你喜欢

转载自blog.csdn.net/u013832676/article/details/51704516
今日推荐