|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| #ifndef _PointsAlgos_h_
|
| #define _PointsAlgos_h_
|
|
|
| #include <Eigen/Core>
|
|
|
| #include "Points.h"
|
| #include "Properties.h"
|
|
|
|
|
| namespace Points
|
| {
|
|
|
| |
|
|
| class PointsExport PointsAlgos
|
| {
|
| public:
|
| |
|
|
| static void Load(PointKernel&, const char* FileName);
|
| |
|
|
| static void LoadAscii(PointKernel&, const char* FileName);
|
| };
|
|
|
| class PointsExport Reader
|
| {
|
| public:
|
| Reader();
|
| virtual ~Reader();
|
| virtual void read(const std::string& filename) = 0;
|
|
|
| void clear();
|
| const PointKernel& getPoints() const;
|
| bool hasProperties() const;
|
| const std::vector<float>& getIntensities() const;
|
| bool hasIntensities() const;
|
| const std::vector<Base::Color>& getColors() const;
|
| bool hasColors() const;
|
| const std::vector<Base::Vector3f>& getNormals() const;
|
| bool hasNormals() const;
|
| bool isStructured() const;
|
| int getWidth() const;
|
| int getHeight() const;
|
|
|
| Reader(const Reader&) = delete;
|
| Reader(Reader&&) = delete;
|
| Reader& operator=(const Reader&) = delete;
|
| Reader& operator=(Reader&&) = delete;
|
|
|
| protected:
|
|
|
| PointKernel points;
|
| std::vector<float> intensity;
|
| std::vector<Base::Color> colors;
|
| std::vector<Base::Vector3f> normals;
|
| int width {0};
|
| int height {1};
|
|
|
| };
|
|
|
| class PointsExport AscReader: public Reader
|
| {
|
| public:
|
| AscReader();
|
| void read(const std::string& filename) override;
|
| };
|
|
|
| class PointsExport PlyReader: public Reader
|
| {
|
| public:
|
| PlyReader();
|
| void read(const std::string& filename) override;
|
|
|
| private:
|
| std::size_t readHeader(
|
| std::istream&,
|
| std::string& format,
|
| std::size_t& offset,
|
| std::vector<std::string>& fields,
|
| std::vector<std::string>& types,
|
| std::vector<int>& sizes
|
| );
|
| void readAscii(std::istream&, std::size_t offset, Eigen::MatrixXd& data);
|
| void readBinary(
|
| bool swapByteOrder,
|
| std::istream&,
|
| std::size_t offset,
|
| const std::vector<std::string>& types,
|
| const std::vector<int>& sizes,
|
| Eigen::MatrixXd& data
|
| );
|
| };
|
|
|
| class PointsExport PcdReader: public Reader
|
| {
|
| public:
|
| PcdReader();
|
| void read(const std::string& filename) override;
|
|
|
| private:
|
| std::size_t readHeader(
|
| std::istream&,
|
| std::string& format,
|
| std::vector<std::string>& fields,
|
| std::vector<std::string>& types,
|
| std::vector<int>& sizes
|
| );
|
| void readAscii(std::istream&, Eigen::MatrixXd& data);
|
| void readBinary(
|
| bool transpose,
|
| std::istream&,
|
| const std::vector<std::string>& types,
|
| const std::vector<int>& sizes,
|
| Eigen::MatrixXd& data
|
| );
|
| };
|
|
|
| class PointsExport E57Reader: public Reader
|
| {
|
| public:
|
| E57Reader(bool Color, bool State, double Distance);
|
| void read(const std::string& filename) override;
|
|
|
| protected:
|
| bool useColor, checkState;
|
| double minDistance;
|
| };
|
|
|
| class PointsExport Writer
|
| {
|
| public:
|
| explicit Writer(const PointKernel&);
|
| virtual ~Writer();
|
| virtual void write(const std::string& filename) = 0;
|
|
|
| void setIntensities(const std::vector<float>&);
|
| void setColors(const std::vector<Base::Color>&);
|
| void setNormals(const std::vector<Base::Vector3f>&);
|
| void setWidth(int);
|
| void setHeight(int);
|
| void setPlacement(const Base::Placement&);
|
|
|
| Writer(const Writer&) = delete;
|
| Writer(Writer&&) = delete;
|
| Writer& operator=(const Writer&) = delete;
|
| Writer& operator=(Writer&&) = delete;
|
|
|
| protected:
|
|
|
| const PointKernel& points;
|
| std::vector<float> intensity;
|
| std::vector<Base::Color> colors;
|
| std::vector<Base::Vector3f> normals;
|
| int width, height;
|
| Base::Placement placement;
|
|
|
| };
|
|
|
| class PointsExport AscWriter: public Writer
|
| {
|
| public:
|
| explicit AscWriter(const PointKernel&);
|
| void write(const std::string& filename) override;
|
| };
|
|
|
| class PointsExport PlyWriter: public Writer
|
| {
|
| public:
|
| explicit PlyWriter(const PointKernel&);
|
| void write(const std::string& filename) override;
|
| };
|
|
|
| class PointsExport PcdWriter: public Writer
|
| {
|
| public:
|
| explicit PcdWriter(const PointKernel&);
|
| void write(const std::string& filename) override;
|
| };
|
|
|
| }
|
|
|
|
|
| #endif
|
|
|