point_cloud_library / 1.12.1 / classpcl_1_1_p_c_d_reader.html /

Point Cloud Data (PCD) file format reader. More...

#include <pcl/io/pcd_io.h>

Public Types

enum { PCD_V6 = 0, PCD_V7 = 1 }
Various PCD file versions. More...

Public Member Functions

PCDReader ()
Empty constructor. More...
~PCDReader ()
Empty destructor. More...
int readHeader (std::istream &binary_istream, pcl::PCLPointCloud2 &cloud, Eigen::Vector4f &origin, Eigen::Quaternionf &orientation, int &pcd_version, int &data_type, unsigned int &data_idx)
Read a point cloud data header from a PCD-formatted, binary istream. More...
int readHeader (const std::string &file_name, pcl::PCLPointCloud2 &cloud, Eigen::Vector4f &origin, Eigen::Quaternionf &orientation, int &pcd_version, int &data_type, unsigned int &data_idx, const int offset=0) override
Read a point cloud data header from a PCD file. More...
int readHeader (const std::string &file_name, pcl::PCLPointCloud2 &cloud, const int offset=0)
Read a point cloud data header from a PCD file. More...
int readBodyASCII (std::istream &stream, pcl::PCLPointCloud2 &cloud, int pcd_version)
Read the point cloud data (body) from a PCD stream. More...
int readBodyBinary (const unsigned char *data, pcl::PCLPointCloud2 &cloud, int pcd_version, bool compressed, unsigned int data_idx)
Read the point cloud data (body) from a block of memory. More...
int read (const std::string &file_name, pcl::PCLPointCloud2 &cloud, Eigen::Vector4f &origin, Eigen::Quaternionf &orientation, int &pcd_version, const int offset=0) override
Read a point cloud data from a PCD file and store it into a pcl/PCLPointCloud2. More...
int read (const std::string &file_name, pcl::PCLPointCloud2 &cloud, const int offset=0)
Read a point cloud data from a PCD (PCD_V6) and store it into a pcl/PCLPointCloud2. More...
template<typename PointT >
int read (const std::string &file_name, pcl::PointCloud< PointT > &cloud, const int offset=0)
Read a point cloud data from any PCD file, and convert it to the given template format. More...
- Public Member Functions inherited from pcl::FileReader
FileReader ()
empty constructor More...
virtual ~FileReader ()
empty destructor More...
int read (const std::string &file_name, pcl::PCLPointCloud2 &cloud, const int offset=0)
Read a point cloud data from a FILE file (FILE_V6 only!) and store it into a pcl/PCLPointCloud2. More...
template<typename PointT >
int read (const std::string &file_name, pcl::PointCloud< PointT > &cloud, const int offset=0)
Read a point cloud data from any FILE file, and convert it to the given template format. More...

Detailed Description

Point Cloud Data (PCD) file format reader.

Author
Radu B. Rusu

Definition at line 54 of file pcd_io.h.

Member Enumeration Documentation

anonymous enum

anonymous enum

Various PCD file versions.

PCD_V6 represents PCD files with version 0.6, which contain the following fields:

  • lines beginning with # are treated as comments
  • FIELDS ...
  • SIZE ...
  • TYPE ...
  • COUNT ...
  • WIDTH ...
  • HEIGHT ...
  • POINTS ...
  • DATA ascii/binary

Everything that follows DATA is interpreted as data points and will be read accordingly.

PCD_V7 represents PCD files with version 0.7 and has an important addon: it adds sensor origin/orientation (aka viewpoint) information to a dataset through the use of a new header field:

  • VIEWPOINT tx ty tz qw qx qy qz
Enumerator
PCD_V6
PCD_V7

Definition at line 83 of file pcd_io.h.

Constructor & Destructor Documentation

PCDReader()

pcl::PCDReader::PCDReader ( )
inline

Empty constructor.

Definition at line 58 of file pcd_io.h.

~PCDReader()

pcl::PCDReader::~PCDReader ( )
inline

Empty destructor.

Definition at line 60 of file pcd_io.h.

Member Function Documentation

read() [1/3]

int pcl::PCDReader::read ( const std::string & file_name,
pcl::PCLPointCloud2 & cloud,
const int offset = 0
)

Read a point cloud data from a PCD (PCD_V6) and store it into a pcl/PCLPointCloud2.

Note
This function is provided for backwards compatibility only and it can only read PCD_V6 files correctly, as pcl::PCLPointCloud2 does not contain a sensor origin/orientation. Reading any file

PCD_V6 will generate a warning.

Parameters
[in] file_name the name of the file containing the actual PointCloud data
[out] cloud the resultant PointCloud message read from disk
[in] offset the offset of where to expect the PCD Header in the file (optional parameter). One usage example for setting the offset parameter is for reading data from a TAR "archive containing multiple PCD files: TAR files always add a 512 byte header in front of the actual file, so set the offset to the next byte after the header (e.g., 513).
Returns
  • < 0 (-1) on error
  • == 0 on success

read() [2/3]

int pcl::PCDReader::read ( const std::string & file_name,
pcl::PCLPointCloud2 & cloud,
Eigen::Vector4f & origin,
Eigen::Quaternionf & orientation,
int & pcd_version,
const int offset = 0
)
overridevirtual

Read a point cloud data from a PCD file and store it into a pcl/PCLPointCloud2.

Parameters
[in] file_name the name of the file containing the actual PointCloud data
[out] cloud the resultant PointCloud message read from disk
[out] origin the sensor acquisition origin (only for > PCD_V7 - null if not present)
[out] orientation the sensor acquisition orientation (only for > PCD_V7 - identity if not present)
[out] pcd_version the PCD version of the file (either PCD_V6 or PCD_V7)
[in] offset the offset of where to expect the PCD Header in the file (optional parameter). One usage example for setting the offset parameter is for reading data from a TAR "archive containing multiple PCD files: TAR files always add a 512 byte header in front of the actual file, so set the offset to the next byte after the header (e.g., 513).
Returns
  • < 0 (-1) on error
  • == 0 on success

Implements pcl::FileReader.

Referenced by pcl::gpu::DataSource::DataSource(), pcl::outofcore::OutofcoreOctreeDiskContainer< PointT >::insertRange(), pcl::io::loadPCDFile(), pcl::LineRGBD< PointXYZT, PointRGBT >::loadTemplates(), and pcl::outofcore::OutofcoreOctreeDiskContainer< PointT >::readRange().

read() [3/3]

template<typename PointT >
int pcl::PCDReader::read ( const std::string & file_name,
pcl::PointCloud< PointT > & cloud,
const int offset = 0
)
inline

Read a point cloud data from any PCD file, and convert it to the given template format.

Parameters
[in] file_name the name of the file containing the actual PointCloud data
[out] cloud the resultant PointCloud message read from disk
[in] offset the offset of where to expect the PCD Header in the file (optional parameter). One usage example for setting the offset parameter is for reading data from a TAR "archive containing multiple PCD files: TAR files always add a 512 byte header in front of the actual file, so set the offset to the next byte after the header (e.g., 513).
Returns
  • < 0 (-1) on error
  • == 0 on success

Definition at line 277 of file pcd_io.h.

References pcl::fromPCLPointCloud2(), pcl::read(), pcl::PointCloud< PointT >::sensor_orientation_, and pcl::PointCloud< PointT >::sensor_origin_.

readBodyASCII()

int pcl::PCDReader::readBodyASCII ( std::istream & stream,
pcl::PCLPointCloud2 & cloud,
int pcd_version
)

Read the point cloud data (body) from a PCD stream.

Reads the cloud points from a text-formatted stream. For use after readHeader(), when the resulting data_type == 0.

Attention
This assumes the stream has been seeked to the position indicated by the data_idx result of readHeader().
Parameters
[in] stream the stream from which to read the body.
[out] cloud the resultant point cloud dataset to be filled.
[in] pcd_version the PCD version of the stream (from readHeader()).
Returns
  • < 0 (-1) on error
  • == 0 on success

readBodyBinary()

int pcl::PCDReader::readBodyBinary ( const unsigned char * data,
pcl::PCLPointCloud2 & cloud,
int pcd_version,
bool compressed,
unsigned int data_idx
)

Read the point cloud data (body) from a block of memory.

Reads the cloud points from a binary-formatted memory block. For use after readHeader(), when the resulting data_type is nonzero.

Parameters
[in] data the memory location from which to read the body.
[out] cloud the resultant point cloud dataset to be filled.
[in] pcd_version the PCD version of the stream (from readHeader()).
[in] compressed indicates whether the PCD block contains compressed data. This should be true if the data_type returne by readHeader() == 2.
[in] data_idx the offset of the body, as reported by readHeader().
Returns
  • < 0 (-1) on error
  • == 0 on success

readHeader() [1/3]

int pcl::PCDReader::readHeader ( const std::string & file_name,
pcl::PCLPointCloud2 & cloud,
const int offset = 0
)

Read a point cloud data header from a PCD file.

Load only the meta information (number of points, their types, etc), and not the points themselves, from a given PCD file. Useful for fast evaluation of the underlying data structure.

Attention
The PCD data is always stored in ROW major format! The read/write PCD methods will detect column major input and automatically convert it.
Parameters
[in] file_name the name of the file to load
[out] cloud the resultant point cloud dataset (only these members will be filled: width, height, point_step, row_step, fields[]; data is resized but not written)
[in] offset the offset of where to expect the PCD Header in the file (optional parameter). One usage example for setting the offset parameter is for reading data from a TAR "archive containing multiple PCD files: TAR files always add a 512 byte header in front of the actual file, so set the offset to the next byte after the header (e.g., 513).
Returns
  • < 0 (-1) on error
  • == 0 on success

readHeader() [2/3]

int pcl::PCDReader::readHeader ( const std::string & file_name,
pcl::PCLPointCloud2 & cloud,
Eigen::Vector4f & origin,
Eigen::Quaternionf & orientation,
int & pcd_version,
int & data_type,
unsigned int & data_idx,
const int offset = 0
)
overridevirtual

Read a point cloud data header from a PCD file.

Load only the meta information (number of points, their types, etc), and not the points themselves, from a given PCD file. Useful for fast evaluation of the underlying data structure.

Attention
The PCD data is always stored in ROW major format! The read/write PCD methods will detect column major input and automatically convert it.
Parameters
[in] file_name the name of the file to load
[out] cloud the resultant point cloud dataset (only these members will be filled: width, height, point_step, row_step, fields[]; data is resized but not written)
[out] origin the sensor acquisition origin (only for > PCD_V7 - null if not present)
[out] orientation the sensor acquisition orientation (only for > PCD_V7 - identity if not present)
[out] pcd_version the PCD version of the file (i.e., PCD_V6, PCD_V7)
[out] data_type the type of data (0 = ASCII, 1 = Binary, 2 = Binary compressed)
[out] data_idx the offset of cloud data within the file
[in] offset the offset of where to expect the PCD Header in the file (optional parameter). One usage example for setting the offset parameter is for reading data from a TAR "archive containing multiple PCD files: TAR files always add a 512 byte header in front of the actual file, so set the offset to the next byte after the header (e.g., 513).
Returns
  • < 0 (-1) on error
  • == 0 on success

Implements pcl::FileReader.

readHeader() [3/3]

int pcl::PCDReader::readHeader ( std::istream & binary_istream,
pcl::PCLPointCloud2 & cloud,
Eigen::Vector4f & origin,
Eigen::Quaternionf & orientation,
int & pcd_version,
int & data_type,
unsigned int & data_idx
)

Read a point cloud data header from a PCD-formatted, binary istream.

Load only the meta information (number of points, their types, etc), and not the points themselves, from a given PCD stream. Useful for fast evaluation of the underlying data structure.

Attention
The PCD data is always stored in ROW major format! The read/write PCD methods will detect column major input and automatically convert it.
Parameters
[in] binary_istream a std::istream with openmode set to std::ios::binary.
[out] cloud the resultant point cloud dataset (only these members will be filled: width, height, point_step, row_step, fields[]; data is resized but not written)
[out] origin the sensor acquisition origin (only for > PCD_V7 - null if not present)
[out] orientation the sensor acquisition orientation (only for > PCD_V7 - identity if not present)
[out] pcd_version the PCD version of the file (i.e., PCD_V6, PCD_V7)
[out] data_type the type of data (0 = ASCII, 1 = Binary, 2 = Binary compressed)
[out] data_idx the offset of cloud data within the file
Returns
  • < 0 (-1) on error
  • == 0 on success

Referenced by pcl::outofcore::OutofcoreOctreeDiskContainer< PointT >::getDataSize(), and pcl::outofcore::OutofcoreOctreeDiskContainer< PointT >::OutofcoreOctreeDiskContainer().


The documentation for this class was generated from the following file:

© 2009–2012, Willow Garage, Inc.
© 2012–, Open Perception, Inc.
Licensed under the BSD License.
https://pointclouds.org/documentation/classpcl_1_1_p_c_d_reader.html