9 #ifndef CColouredPointsMap_H 10 #define CColouredPointsMap_H 40 virtual ~CColouredPointsMap();
77 point_data[3] = m_color_R[
index];
78 point_data[4] = m_color_G[
index];
79 point_data[5] = m_color_B[
index];
86 virtual void setPointAllFieldsFast(
const size_t index,
const std::vector<float> & point_data )
MRPT_OVERRIDE {
91 m_color_R[
index] = point_data[3];
92 m_color_G[
index] = point_data[4];
93 m_color_B[
index] = point_data[5];
103 virtual void addFrom_classSpecific(
const CPointsMap &anotherMap,
const size_t nPreviousPoints)
MRPT_OVERRIDE;
116 bool save3D_and_colour_to_text_file(
const std::string &file)
const;
137 virtual void insertPoint(
float x,
float y,
float z,
float R,
float G,
float B )
MRPT_OVERRIDE;
146 inline void insertPoint(
float x,
float y,
float z) { insertPointFast(
x,
y,
z); mark_as_modified(); }
151 void setPointColor(
size_t index,
float R,
float G,
float B);
154 inline void setPointColor_fast(
size_t index,
float R,
float G,
float B)
157 this->m_color_G[
index]=G;
158 this->m_color_B[
index]=B;
166 unsigned long getPoint(
size_t index,
float &
x,
float &
y,
float &
z)
const;
169 void getPointColor(
size_t index,
float &
R,
float &G,
float &B )
const;
175 G = m_color_G[
index];
185 virtual void getAs3DObject( mrpt::opengl::CSetOfObjectsPtr &outObj )
const MRPT_OVERRIDE;
197 cmFromHeightRelativeToSensor = 0,
198 cmFromHeightRelativeToSensorJet = 0,
199 cmFromHeightRelativeToSensorGray = 1,
200 cmFromIntensityImage = 2
208 virtual ~TColourOptions() {}
220 void resetPointsMinDist(
float defValue = 2000.0f );
238 template <
class POINTCLOUD>
241 const size_t N = cloud.points.size();
244 const float f = 1.0f/255.0f;
245 for (
size_t i=0;i<N;++i)
246 this->insertPoint(cloud.points[i].x,cloud.points[i].y,cloud.points[i].z,cloud.points[i].r*f,cloud.points[i].g*f,cloud.points[i].b*f);
250 template <
class POINTCLOUD>
253 const size_t nThis = this->
size();
254 this->getPCLPointCloud(cloud);
256 for (
size_t i = 0; i < nThis; ++i) {
258 this->getPointColor_fast(i,
R,G,B);
259 cloud.points[i].r =
static_cast<uint8_t>(
R*255);
260 cloud.points[i].g =
static_cast<uint8_t>(G*255);
261 cloud.points[i].b =
static_cast<uint8_t>(B*255);
281 virtual
void PLY_import_set_vertex(const
size_t idx, const
mrpt::math::TPoint3Df &pt, const
mrpt::utils::TColorf *pt_color = NULL)
MRPT_OVERRIDE;
289 void PLY_export_get_vertex(const
size_t idx,
mrpt::math::TPoint3Df &pt,
bool &pt_has_color,
mrpt::utils::TColorf &pt_color) const
MRPT_OVERRIDE;
303 #include <mrpt/utils/adapters.h> 314 static const int HAS_RGB = 1;
315 static const int HAS_RGBf = 1;
316 static const int HAS_RGBu8 = 0;
321 inline size_t size()
const {
return m_obj.
size(); }
326 template <
typename T>
336 template <
typename T>
346 template <
typename T>
350 r=Rf*255;
g=Gf*255;
b=Bf*255;
353 inline void setPointXYZ_RGBu8(
const size_t idx,
const coords_t
x,
const coords_t
y,
const coords_t
z,
const uint8_t r,
const uint8_t g,
const uint8_t b) {
void getPointXYZ_RGBf(const size_t idx, T &x, T &y, T &z, float &r, float &g, float &b) const
Get XYZ_RGBf coordinates of i'th point.
TColouringMethod
The choices for coloring schemes:
Declares a class derived from "CObservation" that encapsules an image from a camera, whose relative pose to robot is also stored.
void getPointFast(size_t index, float &x, float &y, float &z) const
Just like getPoint() but without checking out-of-bound index and without returning the point weight...
void insertPoint(const mrpt::math::TPoint3D &p)
#define MAP_DEFINITION_END(_CLASS_NAME_, _LINKAGE_)
void setPointRGBu8(const size_t idx, const uint8_t r, const uint8_t g, const uint8_t b)
Set RGBu8 coordinates of i'th point.
void setPoint(size_t index, mrpt::math::TPoint3Df &p)
Declares a class derived from "CObservation" that encapsules a 3D range scan measurement, as from a time-of-flight range camera or any other RGBD sensor.
void setPointColor_fast(size_t index, float R, float G, float B)
Like setPointColor but without checking for out-of-index erors.
void setFromPCLPointCloudRGB(const POINTCLOUD &cloud)
Loads a PCL point cloud (WITH RGB information) into this MRPT class (for clouds without RGB data...
GLsizei GLsizei GLuint * obj
void clear()
Clear the contents of this container.
TColourOptions colorScheme
The options employed when inserting laser scans in the map.
void getPointXYZ(const size_t idx, T &x, T &y, T &z) const
Get XYZ coordinates of i'th point.
This class allows loading and storing values and vectors of different types from a configuration text...
With this struct options are provided to the observation insertion process.
This base class is used to provide a unified interface to files,memory buffers,..Please see the deriv...
A cloud of points in 2D or 3D, which can be built from a sequence of laser scans or other sensors...
virtual void getPoint(size_t index, float &x, float &y, float &z, float &R, float &G, float &B) const MRPT_OVERRIDE
Retrieves a point and its color (colors range is [0,1])
#define DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
This declaration must be inserted in all CSerializable classes definition, before the class declarati...
void getPointXYZ_RGBu8(const size_t idx, T &x, T &y, T &z, uint8_t &r, uint8_t &g, uint8_t &b) const
Get XYZ_RGBu8 coordinates of i'th point.
mrpt::maps::CColouredPointsMap & m_obj
Lightweight 3D point (float version).
void setPointXYZ_RGBf(const size_t idx, const coords_t x, const coords_t y, const coords_t z, const float r, const float g, const float b)
Set XYZ_RGBf coordinates of i'th point.
EIGEN_STRONG_INLINE void setSize(size_t row, size_t col)
Changes the size of matrix, maintaining its previous content as possible and padding with zeros where...
void insertPoint(const mrpt::math::TPoint3Df &p)
void getPointRGBu8(const size_t idx, uint8_t &r, uint8_t &g, uint8_t &b) const
Get RGBu8 color of i'th point.
A map of 2D/3D points with individual colours (RGB).
virtual void setPoint(size_t index, float x, float y, float z, float R, float G, float B) MRPT_OVERRIDE
Changes a given point from map.
GLsizei const GLchar ** string
virtual void resize(size_t newLength) MRPT_OVERRIDE
Resizes all point buffers so they can hold the given number of points: newly created points are set t...
A class used to store a 3D point.
void getPCLPointCloudXYZRGB(POINTCLOUD &cloud) const
Like CPointsMap::getPCLPointCloud() but for PointCloud<PointXYZRGB>
void setPoint(size_t index, float x, float y, float z)
void setPointRGBf(const size_t idx, const float r, const float g, const float b)
Set XYZ_RGBf coordinates of i'th point.
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
#define DEFINE_SERIALIZABLE(class_name)
This declaration must be inserted in all CSerializable classes definition, within the class declarati...
A "CObservation"-derived class that represents a 2D range scan measurement (typically from a laser sc...
#define ASSERT_BELOW_(__A, __B)
GLdouble GLdouble GLdouble r
size_t size(const MATRIXLIKE &m, const int dim)
virtual void setPointFast(size_t index, float x, float y, float z) MRPT_OVERRIDE
Changes the coordinates of the given point (0-based index), without checking for out-of-bounds and wi...
PointCloudAdapter(const mrpt::maps::CColouredPointsMap &obj)
Constructor (accept a const ref for convenience)
A class used to store a 3D pose (a 3D translation + a rotation in 3D).
Options used when evaluating "computeObservationLikelihood" in the derived classes.
GLsizei GLsizei GLchar * source
void resize(const size_t N)
Set number of points (to uninitialized values)
virtual bool hasColorPoints() const MRPT_OVERRIDE
Returns true if the point map has a color field for each point.
void insertPoint(const mrpt::poses::CPoint3D &p)
size_t size() const
Get number of points.
std::vector< float > m_color_R
The color data.
void setPointXYZ(const size_t idx, const coords_t x, const coords_t y, const coords_t z)
Set XYZ coordinates of i'th point.
The definition of parameters for generating colors from laser scans.
An adapter to different kinds of point cloud object.
#define DEFINE_SERIALIZABLE_POST_CUSTOM_BASE_LINKAGE(class_name, base_name, _LINKAGE_)
size_t size() const
Returns the number of stored points in the map.
void getPointRGBf(const size_t idx, float &r, float &g, float &b) const
Get RGBf color of i'th point.
void getPointColor_fast(size_t index, float &R, float &G, float &B) const
Like getPointColor but without checking for out-of-index erors.
#define MAP_DEFINITION_START(_CLASS_NAME_, _LINKAGE_)
Add a MAP_DEFINITION_START() ...
This is a virtual base class for sets of options than can be loaded from and/or saved to configuratio...
float coords_t
The type of each point XYZ coordinates.