txt格式保存为pcd点云

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Discoverhfub/article/details/102565549
//计算txt点中的个数的方法实现

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;

}


//以下是将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;

    

}

报错:

: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
             n = numofPoints("/home/ly/lego_pcd/pose/lego_pose.txt");

解决办法:

int numofPoints(char* fname){

改成

int numofPoints(char const *fname){  

猜你喜欢

转载自blog.csdn.net/Discoverhfub/article/details/102565549