以与Meshlab兼容的格式保存pcl::PointCloud<pcl::PointXYZRGB>

问题描述 投票:0回答:3
PCL库中有没有函数可以将

pcl::PointCloud<pcl::PointXYZRGB>

点云保存为XYZRGB格式,可以用Meshlab打开?

似乎

pcl::io::savePCDFileASCII (filename, cloud);

以某种特定的方式存储RGB值。

point-cloud-library meshlab
3个回答
9
投票
对我来说,如果我将其存储为二进制格式的 PLY 文件,它就有效。 Meshlab 似乎偶尔会在处理 ASCII 文件时遇到一些问题。这对我有用。

pcl::PointCloud<pcl::PointXYZRGB>::Ptr sceneCloud(new pcl::PointCloud<pcl::PointXYZRGB>); //Fill cloud somehow... std::string writePath = "your/path"; pcl::io::savePLYFileBinary(writePath, *sceneCloudPtr);
    

1
投票
您可以转换为 .ply、.obj 或任何其他支持的格式。查看 PCL 中的演示

pcd2ply

,或者仅使用 
pcl::PLYWriter 根据您的需要设置参数:

pcl::PLYWriter writer; writer.write (filename, cloud, Eigen::Vector4f::Zero (), Eigen::Quaternionf::Identity (), binary, use_camera);
    

0
投票
对于任何可能有相同问题的人,请注意 PLY 文件可能会或可能不会完全形成,例如它可能有也可能没有法线或三角形索引。

此外,数据可能不符合预期的顺序,例如法线可能出现在 RGB 颜色之后或之前。

我发现 PCL 不能很好地处理这个问题。我改用了 VCG 库。 如果您仍然需要使用 PCL,则包含这两个库,但使用 VCG Lib 读入并填充 PCL 数据结构。

© www.soinside.com 2019 - 2024. All rights reserved.