当前位置:网站首页>After PCD is converted to ply, it cannot be opened in meshlab, prompting error details: ignored EOF

After PCD is converted to ply, it cannot be opened in meshlab, prompting error details: ignored EOF

2022-07-06 08:35:00 Will_ Ye

1. Problem

There is one pcd Point cloud file in format , use pcd_viewer It can be displayed normally , But I want to meshlab Do some editing inside , Found unable to open , Prompt the following error
error

And then use vim or gedit To open it , You'll see the problem , Some point cloud files are large , It may get stuck on the way , But my point cloud file is very small , use gedit test2.ply, It is shown as follows :
ply so , It's all garbled mistakes , So it can be inferred that , from pcd Turn into ply There is a problem in the process of . Usually we use them pcl_pcd2ply ./1650511200.015289296.pcd ./test2.ply To convert pcd and ply, So it is certain that this instruction is ok , So the problem is pcd Where are the papers . If you usually pay attention to import pcd After the document , Many people will do a removal NAN The operation of the value , This is actually the key , Because in pcd In the document , It does save some NAN value , And if we don't remove them first , Direct conversion ply file , This will happen , When you know why , The solution is simple .

2. Solution

The train of thought is : stay pcd turn ply front , First do a removal NAN Value operation , And then we're converting , That's fine . Here is the implementation code :

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
    // Dependent functions  #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;
}

It's generated at this point test1.ply You can be in meshlab Successfully opened .
fixed

原网站

版权声明
本文为[Will_ Ye]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207060822255139.html