17 #ifndef IGNITION_COMMON_IMAGE_HH_
18 #define IGNITION_COMMON_IMAGE_HH_
25 #include <ignition/common/graphics/Export.hh>
39 "UNKNOWN_PIXEL_FORMAT",
63 class IGNITION_COMMON_GRAPHICS_VISIBLE
Image
68 UNKNOWN_PIXEL_FORMAT = 0,
125 unsigned int _height,
131 public:
void Data(
unsigned char **_data,
132 unsigned int &_count)
const;
139 unsigned int &_count)
const;
151 public:
unsigned int BPP()
const;
170 const unsigned int _y)
const;
183 public:
void Rescale(
const int _width,
const int _height);
205 public:
template<
typename T>
207 unsigned int _width,
unsigned int _height,
Image &_output,
211 unsigned int samples = _width * _height;
212 unsigned int bufferSize = samples *
sizeof(T);
215 memcpy(buffer.data(), _data, bufferSize);
224 for (
unsigned int i = 0; i < samples; ++i)
230 if (v > max && !
std::isinf(
static_cast<float>(v)))
232 if (v < min && !
std::isinf(
static_cast<float>(v)))
241 double range =
static_cast<double>(max - min);
244 unsigned int idx = 0;
245 for (
unsigned int j = 0; j < _height; ++j)
247 for (
unsigned int i = 0; i < _width; ++i)
249 auto v = buffer[idx++];
250 double t =
static_cast<double>(v - min) / range;
253 uint8_t r =
static_cast<uint8_t
>(255*t);
254 unsigned int outIdx = j * _width * 3 + i * 3;
255 outputRgbBuffer[outIdx] = r;
256 outputRgbBuffer[outIdx + 1] = r;
257 outputRgbBuffer[outIdx + 2] = r;
260 _output.
SetFromData(outputRgbBuffer.data(), _width, _height, RGB_INT8);
#define IGN_COMMON_WARN_IGNORE__DLL_INTERFACE_MISSING
Microsoft Visual Studio does not automatically export the interface information for member variables ...
Definition: SuppressWarning.hh:64
#define IGN_COMMON_WARN_RESUME__DLL_INTERFACE_MISSING
Definition: SuppressWarning.hh:67
Encapsulates an image.
Definition: Image.hh:64
unsigned int BPP() const
Get the size of one pixel in bits.
math::Color AvgColor()
Get the average color.
unsigned int Width() const
Get the width.
void SavePNGToBuffer(std::vector< unsigned char > &_buffer)
Save the image in PNG format.
void RGBData(unsigned char **_data, unsigned int &_count) const
Get only the RGB data from the image. This will drop the alpha channel if one is present.
void Data(unsigned char **_data, unsigned int &_count) const
Get the image as a data array.
bool Valid() const
Returns whether this is a valid image.
static void ConvertToRGBImage(const void *_data, unsigned int _width, unsigned int _height, Image &_output, T _min=std::numeric_limits< T >::max(), T _max=std::numeric_limits< T >::lowest(), bool _flip=false)
Convert a single channel image data buffer into an RGB image. During the conversion,...
Definition: Image.hh:206
virtual ~Image()
Destructor.
Image(const std::string &_filename="")
Constructor.
math::Color MaxColor() const
Get the max color.
PixelFormatType PixelFormat() const
Get the pixel format.
void SetFromData(const unsigned char *_data, unsigned int _width, unsigned int _height, Image::PixelFormatType _format)
Set the image from raw data.
PixelFormatType
Pixel formats enumeration.
Definition: Image.hh:67
@ BAYER_GRBG8
Definition: Image.hh:86
@ RGB_FLOAT16
Definition: Image.hh:80
@ RGB_INT8
Definition: Image.hh:71
@ RGB_FLOAT32
Definition: Image.hh:82
@ BAYER_GBRG8
Definition: Image.hh:85
@ L_INT16
Definition: Image.hh:70
@ BGR_INT8
Definition: Image.hh:76
@ R_FLOAT32
Definition: Image.hh:81
@ BAYER_RGGB8
Definition: Image.hh:83
@ L_INT8
Definition: Image.hh:69
@ RGB_INT32
Definition: Image.hh:75
@ RGBA_INT8
Definition: Image.hh:72
@ BGR_INT32
Definition: Image.hh:78
@ PIXEL_FORMAT_COUNT
Definition: Image.hh:87
@ BGRA_INT8
Definition: Image.hh:73
@ RGB_INT16
Definition: Image.hh:74
@ BGR_INT16
Definition: Image.hh:77
@ R_FLOAT16
Definition: Image.hh:79
@ BAYER_RGGR8
Definition: Image.hh:84
void Rescale(const int _width, const int _height)
Rescale the image.
int Load(const std::string &_filename)
Load an image. Return 0 on success.
static Image::PixelFormatType ConvertPixelFormat(const std::string &_format)
Convert a string to a Image::PixelFormat.
unsigned int Height() const
Get the height.
std::string Filename() const
Get the full filename of the image.
math::Color Pixel(const unsigned int _x, const unsigned int _y) const
Get a pixel color value.
void SavePNG(const std::string &_filename)
Save the image in PNG format.
static std::string PixelFormatNames[]
String names for the pixel formats.
Definition: Image.hh:37
bool equal(const T &_a, const T &_b, const T &_epsilon=T(1e-6))
Forward declarations for the common classes.