当前位置:网站首页>pcd转ply后在meshlab无法打开,提示 Error details: Unespected eof

pcd转ply后在meshlab无法打开,提示 Error details: Unespected eof

2022-07-06 08:22:00 Will_Ye

1. Problem

有一个pcd格式的点云文件,用pcd_viewer可以正常显示,但是想在meshlab里面做些编辑,发现无法打开,提示如下的错误
error

然后用vimgedit来打开它,就会发现问题,有些点云文件很大,可能卡死在半路,但是我这个点云文件很小,用gedit test2.ply,显示如下:
ply可见,都是乱码的错误,所以可以推断,从pcd转成ply的过程处问题了。一般我们都是用pcl_pcd2ply ./1650511200.015289296.pcd ./test2.ply来转换pcd和ply,所以可以确定的是这个指令是没问题的,所以问题出在pcd文件那里。如果平时有留意导入pcd文件后,很多人都会做一个去除NAN值的操作,这一点其实很关键,因为在pcd文件里,确实会保存一些NAN值,而如果我们不先去除它们,直接转成ply文件,就会出现上述的情况,知道原因后,解决就简单了。

2. Solution

思路是:在pcd转ply前,先做一次去除NAN值操作,然后在进行转换,就没问题了。以下是实现代码:

int PCD2PLY_W_removeNAN(string pcdPath, string savePath)
    pcl::PCLPointCloud2 cloud_ori;
    if (loadPCDFile(pcdPath, cloud_ori) < 0)
    {
    
        cout << "Error: cannot load the PCD file!!!" << endl;
        return -1;
    }
    // remove NaN type points
    //依赖函数 #include <pcl/filters/filter.h>
    std::vector<int> mapping;
    pcl::removeNaNFromPointCloud(*cloud_ori, *cloud_ori, mapping);
    string savePath = "/home/will/test1.ply";
    pcl::PLYWriter writer;
    writer.write(savePath,*cloud_ori);
    return 0;
}

这时生成的test1.ply就能在meshlab顺利打开了。
fixed

原网站

版权声明
本文为[Will_Ye]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Will_Ye/article/details/125629238