Point Cloud Library (PCL)
1.15.1
Toggle main menu visibility
Loading...
Searching...
No Matches
pcl
io
ascii_io.h
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Point Cloud Library (PCL) - www.pointclouds.org
5
* Copyright (c) 2012-, Open Perception, Inc.
6
*
7
* All rights reserved.
8
*
9
* Redistribution and use in source and binary forms, with or without
10
* modification, are permitted provided that the following conditions
11
* are met:
12
*
13
* * Redistributions of source code must retain the above copyright
14
* notice, this list of conditions and the following disclaimer.
15
* * Redistributions in binary form must reproduce the above
16
* copyright notice, this list of conditions and the following
17
* disclaimer in the documentation and/or other materials provided
18
* with the distribution.
19
* * Neither the name of the copyright holder(s) nor the names of its
20
* contributors may be used to endorse or promote products derived
21
* from this software without specific prior written permission.
22
*
23
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
26
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
27
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
28
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
29
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
30
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
31
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
33
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
* POSSIBILITY OF SUCH DAMAGE.
35
*
36
*/
37
38
#pragma once
39
40
#include <
pcl/pcl_macros.h
>
41
#include <pcl/io/file_io.h>
42
#include <pcl/PCLPointField.h>
43
#include <pcl/common/io.h>
44
#include <pcl/common/utils.h>
// pcl::utils::ignore
45
46
47
namespace
pcl
48
{
49
/** \brief Ascii Point Cloud Reader.
50
* Read any ASCII file by setting the separating characters and input point fields.
51
*
52
* \author Adam Stambler (adasta@gmail.com)
53
* \ingroup io
54
*/
55
class
PCL_EXPORTS
ASCIIReader
:
public
FileReader
56
{
57
public
:
58
ASCIIReader
();
59
~ASCIIReader
()
override
;
60
using
FileReader::read
;
61
62
/* Load only the meta information (number of points, their types, etc),
63
* and not the points themselves, from a given FILE file. Useful for fast
64
* evaluation of the underlying data structure.
65
*
66
* Returns:
67
* * < 0 (-1) on error
68
* * > 0 on success
69
* \param[in] file_name the name of the file to load
70
* \param[out] cloud the resultant point cloud dataset (only the header will be filled)
71
* \param[out] origin the sensor acquisition origin (only for > FILE_V7 - null if not present)
72
* \param[out] orientation the sensor acquisition orientation (only for > FILE_V7 - identity if not present)
73
* \param[out] file_version the FILE version of the file (either FILE_V6 or FILE_V7)
74
* \param[out] data_type the type of data (binary data=1, ascii=0, etc)
75
* \param[out] data_idx the offset of cloud data within the file
76
* \param[in] offset the offset in the file where to expect the true header to begin.
77
* One usage example for setting the offset parameter is for reading
78
* data from a TAR "archive containing multiple files: TAR files always
79
* add a 512 byte header in front of the actual file, so set the offset
80
* to the next byte after the header (e.g., 513).
81
*/
82
int
83
readHeader
(
const
std::string &file_name,
pcl::PCLPointCloud2
&cloud,
84
Eigen::Vector4f &origin, Eigen::Quaternionf &orientation,
85
int
&file_version,
int
&data_type,
unsigned
int
&data_idx,
const
int
offset = 0)
override
;
86
87
88
/** \brief Read a point cloud data from a FILE file and store it into a pcl/PCLPointCloud2.
89
* \param[in] file_name the name of the file containing the actual PointCloud data
90
* \param[out] cloud the resultant PointCloud message read from disk
91
* \param[out] origin the sensor acquisition origin (only for > FILE_V7 - null if not present)
92
* \param[out] orientation the sensor acquisition orientation (only for > FILE_V7 - identity if not present)
93
* \param[out] file_version the FILE version of the file (either FILE_V6 or FILE_V7)
94
* \param[in] offset the offset in the file where to expect the true header to begin.
95
* One usage example for setting the offset parameter is for reading
96
* data from a TAR "archive containing multiple files: TAR files always
97
* add a 512 byte header in front of the actual file, so set the offset
98
* to the next byte after the header (e.g., 513).
99
*/
100
int
101
read
(
const
std::string &file_name,
pcl::PCLPointCloud2
&cloud,
102
Eigen::Vector4f &origin, Eigen::Quaternionf &orientation,
int
&file_version,
103
const
int
offset = 0)
override
;
104
105
/** \brief Set the ascii file point fields.
106
*/
107
template
<
typename
Po
int
T>
108
void
setInputFields
();
109
110
/** \brief Set the ascii file point fields using a list of fields.
111
* \param[in] fields is a list of point fields, in order, in the input ascii file
112
*/
113
void
114
setInputFields
(
const
std::vector<pcl::PCLPointField>&
fields
);
115
116
/** \brief Set the Separating characters for the ascii point fields 2.
117
* \param[in] chars string of separating characters
118
* Sets the separating characters for the point fields. The
119
* default separating characters are " \n\t,"
120
*/
121
void
122
setSepChars
(
const
std::string &chars);
123
124
/** \brief Set the extension of the ascii point file type.
125
* \param[in] ext extension (example : ".txt" or ".xyz" )
126
*/
127
void
128
setExtension
(
const
std::string &ext) {
extension_
= ext; }
129
130
protected
:
131
std::string
sep_chars_
{
", \n\r\t"
};
132
std::string
extension_
{
".txt"
};
133
std::vector<pcl::PCLPointField>
fields_
;
134
std::string
name_
{
"AsciiReader"
};
135
136
137
/** \brief Parses token based on field type.
138
* \param[in] token string representation of point fields
139
* \param[in] field token point field type
140
* \param[out] data_target address that the point field data should be assigned to
141
* returns the size of the parsed point field in bytes
142
*/
143
int
144
parse
(
const
std::string& token,
const
pcl::PCLPointField
& field, std::uint8_t* data_target);
145
146
/** \brief Returns the size in bytes of a point field type.
147
* \param[in] type point field type
148
* returns the size of the type in bytes
149
*/
150
std::uint32_t
151
typeSize
(
int
type);
152
};
153
}
154
155
#include <pcl/io/impl/ascii_io.hpp>
pcl::ASCIIReader::sep_chars_
std::string sep_chars_
Definition
ascii_io.h:131
pcl::ASCIIReader::parse
int parse(const std::string &token, const pcl::PCLPointField &field, std::uint8_t *data_target)
Parses token based on field type.
pcl::ASCIIReader::readHeader
int readHeader(const std::string &file_name, pcl::PCLPointCloud2 &cloud, Eigen::Vector4f &origin, Eigen::Quaternionf &orientation, int &file_version, int &data_type, unsigned int &data_idx, const int offset=0) override
Read a point cloud data header from a FILE file.
pcl::ASCIIReader::extension_
std::string extension_
Definition
ascii_io.h:132
pcl::ASCIIReader::name_
std::string name_
Definition
ascii_io.h:134
pcl::ASCIIReader::ASCIIReader
ASCIIReader()
pcl::ASCIIReader::setInputFields
void setInputFields(const std::vector< pcl::PCLPointField > &fields)
Set the ascii file point fields using a list of fields.
pcl::ASCIIReader::fields_
std::vector< pcl::PCLPointField > fields_
Definition
ascii_io.h:133
pcl::ASCIIReader::read
int read(const std::string &file_name, pcl::PCLPointCloud2 &cloud, Eigen::Vector4f &origin, Eigen::Quaternionf &orientation, int &file_version, const int offset=0) override
Read a point cloud data from a FILE file and store it into a pcl/PCLPointCloud2.
pcl::ASCIIReader::setExtension
void setExtension(const std::string &ext)
Set the extension of the ascii point file type.
Definition
ascii_io.h:128
pcl::ASCIIReader::~ASCIIReader
~ASCIIReader() override
pcl::ASCIIReader::setSepChars
void setSepChars(const std::string &chars)
Set the Separating characters for the ascii point fields 2.
pcl::ASCIIReader::setInputFields
void setInputFields()
Set the ascii file point fields.
Definition
ascii_io.hpp:47
pcl::ASCIIReader::typeSize
std::uint32_t typeSize(int type)
Returns the size in bytes of a point field type.
pcl::FileReader::read
virtual int read(const std::string &file_name, pcl::PCLPointCloud2 &cloud, Eigen::Vector4f &origin, Eigen::Quaternionf &orientation, int &file_version, const int offset=0)=0
Read a point cloud data from a FILE file and store it into a pcl/PCLPointCloud2.
pcl::FileReader::FileReader
FileReader()=default
empty constructor
pcl::fields
Definition
type_traits.h:60
pcl
Definition
convolution.h:46
pcl_macros.h
Defines all the PCL and non-PCL macros used.
pcl::PCLPointCloud2
Definition
PCLPointCloud2.h:17
pcl::PCLPointField
Definition
PCLPointField.h:13