You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
2.3 KiB

// License: Apache 2.0. See LICENSE file in root directory.
// Copyright(c) 2018 Intel Corporation. All Rights Reserved.
#ifndef __RS_CONVERTER_CONVERTER_PLY_H
#define __RS_CONVERTER_CONVERTER_PLY_H
#include "../converter.hpp"
namespace rs2 {
namespace tools {
namespace converter {
class converter_ply : public converter_base {
protected:
std::string _filePath;
public:
converter_ply(const std::string& filePath)
: _filePath(filePath)
{
}
std::string name() const override
{
return "PLY converter";
}
void convert(rs2::frame& frame) override
{
rs2::pointcloud pc;
start_worker(
[this, &frame, pc]() mutable {
auto frameset = frame.as<rs2::frameset>();
auto frameDepth = frameset.get_depth_frame();
auto frameColor = frameset.get_color_frame();
if (frameDepth && frameColor) {
if (frames_map_get_and_set(rs2_stream::RS2_STREAM_ANY, frameDepth.get_frame_number())) {
return;
}
pc.map_to(frameColor);
auto points = pc.calculate(frameDepth);
std::stringstream filename;
filename << _filePath
<< "_" << std::setprecision(14) << std::fixed << frameDepth.get_timestamp()
<< ".ply";
points.export_to_ply(filename.str(), frameColor);
std::stringstream metadata_file;
metadata_file << _filePath
<< "_metadata_" << std::setprecision(14) << std::fixed << frameDepth.get_timestamp()
<< ".txt";
metadata_to_txtfile(frameDepth, metadata_file.str());
}
});
}
};
}
}
}
#endif