Сохраните pcl::PointCloud‹pcl::PointXYZRGB› в формате, совместимом с Meshlab

Есть ли в библиотеке PCL какая-либо функция для сохранения pcl::PointCloud<pcl::PointXYZRGB> облака точек в формате XYZRGB, которое можно открыть с помощью Meshlab?

Кажется, pcl::io::savePCDFileASCII (filename, cloud); хранит значения RGB каким-то особым образом.


person mrgloom    schedule 09.06.2016    source источник


Ответы (2)


Для меня это работает, если я сохраняю его как файл 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);
person Tukk    schedule 22.05.2017
comment
Работал на меня. savePLYFileBinary определяется в pcl/io/ply_io.h, который я должен был включить. - person Gabriel Devillers; 16.08.2017
comment
Было бы неплохо, если бы вы отметили это как ответ ;) - person Tukk; 17.08.2017

Вы можете конвертировать в .ply, .obj или любой другой поддерживаемый формат. Посмотрите демонстрацию pcd2ply в PCL или просто используйте pcl::PLYWriter настройка параметров в зависимости от ваших потребностей:

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