Point Cloud Library (PCL)
1.15.1
Toggle main menu visibility
Loading...
Searching...
No Matches
pcl
io
openni_camera
openni_image.h
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2011 Willow Garage, Inc.
5
*
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions
10
* are met:
11
*
12
* * Redistributions of source code must retain the above copyright
13
* notice, this list of conditions and the following disclaimer.
14
* * Redistributions in binary form must reproduce the above
15
* copyright notice, this list of conditions and the following
16
* disclaimer in the documentation and/or other materials provided
17
* with the distribution.
18
* * Neither the name of the copyright holder(s) nor the names of its
19
* contributors may be used to endorse or promote products derived
20
* from this software without specific prior written permission.
21
*
22
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
25
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
26
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
27
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
28
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
30
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
32
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33
* POSSIBILITY OF SUCH DAMAGE.
34
*
35
*/
36
37
#pragma once
38
39
#include <pcl/pcl_config.h>
40
#include <
pcl/memory.h
>
41
#ifdef HAVE_OPENNI
42
43
#include <pcl/pcl_exports.h>
44
#include "openni.h"
45
#include "openni_exception.h"
46
47
namespace
openni_wrapper
48
{
49
50
/**
51
* @brief Image class containing just a reference to image meta data. Thus this class
52
* just provides an interface to fill a RGB or Grayscale image buffer.
53
* @author Suat Gedikli
54
* @date 02.january 2011
55
* @param[in] image_meta_data
56
* @ingroup io
57
*/
58
class
PCL_EXPORTS
Image
59
{
60
public
:
61
using
Ptr
= pcl::shared_ptr<Image>;
62
using
ConstPtr
= pcl::shared_ptr<const Image>;
63
64
enum
Encoding
65
{
66
BAYER_GRBG
,
67
YUV422
,
68
RGB
69
};
70
71
/**
72
* @author Suat Gedikli
73
* @brief Constructor
74
* @param[in] image_meta_data the actual image data from the OpenNI driver
75
*/
76
inline
Image
(pcl::shared_ptr<xn::ImageMetaData> image_meta_data)
noexcept
;
77
78
/**
79
* @author Suat Gedikli
80
* @brief virtual Destructor that never throws an exception.
81
*/
82
inline
virtual
~Image
() noexcept;
83
84
/**
85
* @author Suat Gedikli
86
* @param[in] input_width width of input image
87
* @param[in] input_height height of input image
88
* @param[in] output_width width of desired output image
89
* @param[in] output_height height of desired output image
90
* @return whether the resizing is supported or not.
91
*/
92
virtual
bool
isResizingSupported
(
unsigned
input_width,
unsigned
input_height,
93
unsigned
output_width,
unsigned
output_height) const = 0;
94
95
/**
96
* @author Suat Gedikli
97
* @brief fills a user given buffer with the RGB values, with an optional nearest-neighbor down sampling and an optional subregion
98
* @param[in] width desired width of output image.
99
* @param[in] height desired height of output image.
100
* @param[in,out] rgb_buffer the output RGB buffer.
101
* @param[in] rgb_line_step optional line step in bytes to allow the output in a rectangular subregion of the output buffer.
102
*/
103
virtual
void
fillRGB
(
unsigned
width,
unsigned
height,
unsigned
char
* rgb_buffer,
104
unsigned
rgb_line_step = 0) const = 0;
105
106
/**
107
* @author Suat Gedikli
108
* @brief returns the encoding of the native data.
109
* @return encoding
110
*/
111
virtual
Encoding
getEncoding
() const = 0;
112
113
/**
114
* @author Suat Gedikli
115
* @brief fills a user given buffer with the raw values.
116
* @param[in,out] rgb_buffer
117
*/
118
inline
void
119
fillRaw
(
unsigned
char
* rgb_buffer) const noexcept
120
{
121
memcpy (rgb_buffer,
image_md_
->Data (),
image_md_
->DataSize ());
122
}
123
124
/**
125
* @author Suat Gedikli
126
* @brief fills a user given buffer with the gray values, with an optional nearest-neighbor down sampling and an optional subregion
127
* @param[in] width desired width of output image.
128
* @param[in] height desired height of output image.
129
* @param[in,out] gray_buffer the output gray buffer.
130
* @param[in] gray_line_step optional line step in bytes to allow the output in a rectangular subregion of the output buffer.
131
*/
132
virtual
void
fillGrayscale
(
unsigned
width,
unsigned
height,
unsigned
char
* gray_buffer,
133
unsigned
gray_line_step = 0)
const
= 0;
134
135
/**
136
* @author Suat Gedikli
137
* @return width of the image
138
*/
139
inline
unsigned
getWidth
() const noexcept;
140
141
/**
142
* @author Suat Gedikli
143
* @return height of the image
144
*/
145
inline
unsigned
getHeight
() const noexcept;
146
147
/**
148
* @author Suat Gedikli
149
* @return frame id of the image.
150
* @note frame ids are ascending, but not necessarily synch'ed with other streams
151
*/
152
inline
unsigned
getFrameID
() const noexcept;
153
154
/**
155
* @author Suat Gedikli
156
* @return the time stamp of the image
157
* @note the time value is not synche'ed with the system time
158
*/
159
inline
unsigned
long
getTimeStamp
() const noexcept;
160
161
/**
162
* @author Suat Gedikli
163
* @return the actual data in native OpenNI format.
164
*/
165
inline const xn::ImageMetaData&
getMetaData
() const noexcept;
166
167
protected:
168
pcl
::shared_ptr<xn::ImageMetaData>
image_md_
;
169
} ;
170
171
Image
::
Image
(
pcl
::shared_ptr<xn::ImageMetaData> image_meta_data) noexcept
172
:
image_md_
(std::move(image_meta_data))
173
{
174
}
175
176
Image::~Image
() noexcept = default;
177
178
unsigned
179
Image
::
getWidth
() const noexcept
180
{
181
return
image_md_
->XRes ();
182
}
183
184
unsigned
185
Image::getHeight
() const noexcept
186
{
187
return
image_md_
->YRes ();
188
}
189
190
unsigned
191
Image::getFrameID
() const noexcept
192
{
193
return
image_md_
->FrameID ();
194
}
195
196
unsigned
long
197
Image::getTimeStamp
() const noexcept
198
{
199
return
static_cast<
unsigned
long
>
(
image_md_
->Timestamp ());
200
}
201
202
const
xn::ImageMetaData&
203
Image::getMetaData
() const noexcept
204
{
205
return
*
image_md_
;
206
}
207
}
// namespace
208
#endif
openni_wrapper::Image
Image class containing just a reference to image meta data.
Definition
openni_image.h:59
openni_wrapper::Image::isResizingSupported
virtual bool isResizingSupported(unsigned input_width, unsigned input_height, unsigned output_width, unsigned output_height) const =0
openni_wrapper::Image::Ptr
pcl::shared_ptr< Image > Ptr
Definition
openni_image.h:61
openni_wrapper::Image::image_md_
pcl::shared_ptr< xn::ImageMetaData > image_md_
Definition
openni_image.h:168
openni_wrapper::Image::fillRaw
void fillRaw(unsigned char *rgb_buffer) const noexcept
fills a user given buffer with the raw values.
Definition
openni_image.h:119
openni_wrapper::Image::getTimeStamp
unsigned long getTimeStamp() const noexcept
Definition
openni_image.h:197
openni_wrapper::Image::ConstPtr
pcl::shared_ptr< const Image > ConstPtr
Definition
openni_image.h:62
openni_wrapper::Image::fillRGB
virtual void fillRGB(unsigned width, unsigned height, unsigned char *rgb_buffer, unsigned rgb_line_step=0) const =0
fills a user given buffer with the RGB values, with an optional nearest-neighbor down sampling and an...
openni_wrapper::Image::Image
Image(pcl::shared_ptr< xn::ImageMetaData > image_meta_data) noexcept
Constructor.
Definition
openni_image.h:171
openni_wrapper::Image::~Image
virtual ~Image() noexcept
virtual Destructor that never throws an exception.
openni_wrapper::Image::Encoding
Encoding
Definition
openni_image.h:65
openni_wrapper::Image::RGB
@ RGB
Definition
openni_image.h:68
openni_wrapper::Image::BAYER_GRBG
@ BAYER_GRBG
Definition
openni_image.h:66
openni_wrapper::Image::YUV422
@ YUV422
Definition
openni_image.h:67
openni_wrapper::Image::getEncoding
virtual Encoding getEncoding() const =0
returns the encoding of the native data.
openni_wrapper::Image::getFrameID
unsigned getFrameID() const noexcept
Definition
openni_image.h:191
openni_wrapper::Image::getWidth
unsigned getWidth() const noexcept
Definition
openni_image.h:179
openni_wrapper::Image::getHeight
unsigned getHeight() const noexcept
Definition
openni_image.h:185
openni_wrapper::Image::fillGrayscale
virtual void fillGrayscale(unsigned width, unsigned height, unsigned char *gray_buffer, unsigned gray_line_step=0) const =0
fills a user given buffer with the gray values, with an optional nearest-neighbor down sampling and a...
openni_wrapper::Image::getMetaData
const xn::ImageMetaData & getMetaData() const noexcept
Definition
openni_image.h:203
memory.h
Defines functions, macros and traits for allocating and using memory.
openni_wrapper
Definition
openni_depth_image.h:52
pcl
Definition
convolution.h:46