Is there any function in PCL library to save pcl::PointCloud<pcl::PointXYZRGB>
point cloud in format XYZRGB that can be opened with Meshlab?
Seems pcl::io::savePCDFileASCII (filename, cloud);
stores RGB values in some specific way.
Is there any function in PCL library to save pcl::PointCloud<pcl::PointXYZRGB>
point cloud in format XYZRGB that can be opened with Meshlab?
Seems pcl::io::savePCDFileASCII (filename, cloud);
stores RGB values in some specific way.
For me it works, if I store it as PLY file in binary format. It seems as if Meshlab is having some troubles with ASCII files occasionally. Here is what works for me.
pcl::PointCloud<pcl::PointXYZRGB>::Ptr sceneCloud(new pcl::PointCloud<pcl::PointXYZRGB>);
//Fill cloud somehow...
std::string writePath = "your/path";
pcl::io::savePLYFileBinary(writePath, *sceneCloudPtr);
You can convert to .ply, .obj or any other supported format. Have a look to the demo pcd2ply
in the PCL, or just use pcl::PLYWriter setting up the parameters depending on your needs:
pcl::PLYWriter writer;
writer.write (filename, cloud, Eigen::Vector4f::Zero (),
Eigen::Quaternionf::Identity (), binary, use_camera);
For anyone who might have the same question, note that PLY files may or may not be fully formed e.g. it may or may not have normals or triangle indices.
Furthermore the data may not be in an expected order e.g. normals may come after RGB color or before.
I have found that PCL does not handle this well. I've used VCG Library instead. If you still need to use PCL then include both libraries but read in with VCG Lib and populate then PCL data structure.
© 2022 - 2024 — McMap. All rights reserved.
savePLYFileBinary
is defined inpcl/io/ply_io.h
that I had to include. – Tittup