Image.hh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012 Open Source Robotics Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16*/
17/* Desc: Image class
18 * Author: Nate Koenig
19 * Date: 14 July 2008
20 */
21
22#ifndef _IMAGE_HH_
23#define _IMAGE_HH_
24
25#ifdef _WIN32
26 // Ensure that Winsock2.h is included before Windows.h, which can get
27 // pulled in by anybody (e.g., Boost).
28 #include <Winsock2.h>
29#endif
30
31#ifdef BOOL
32#undef BOOL
33#endif
34#include <FreeImage.h>
35#include <string>
36#include <ignition/math/Color.hh>
37
38#include "gazebo/util/system.hh"
39
40namespace gazebo
41{
42 namespace common
43 {
46
49 static std::string PixelFormatNames[] =
50 {
51 "UNKNOWN_PIXEL_FORMAT",
52 "L_INT8",
53 "L_INT16",
54 "RGB_INT8",
55 "RGBA_INT8",
56 "BGRA_INT8",
57 "RGB_INT16",
58 "RGB_INT32",
59 "BGR_INT8",
60 "BGR_INT16",
61 "BGR_INT32",
62 "R_FLOAT16",
63 "RGB_FLOAT16",
64 "R_FLOAT32",
65 "RGB_FLOAT32",
66 "BAYER_RGGB8",
67 "BAYER_RGGR8",
68 "BAYER_GBRG8",
69 "BAYER_GRBG8"
70 };
71
74 class GZ_COMMON_VISIBLE Image
75 {
77 public: enum PixelFormat
78 {
79 UNKNOWN_PIXEL_FORMAT = 0,
98 PIXEL_FORMAT_COUNT
99 };
100
101
106 const std::string &_format);
107
110 public: explicit Image(const std::string &_filename="");
111
113 public: virtual ~Image();
114
118 public: int Load(const std::string &_filename);
119
122 public: void SavePNG(const std::string &_filename);
123
129 public: void SetFromData(const unsigned char *_data,
130 unsigned int _width,
131 unsigned int _height,
132 Image::PixelFormat _format);
133
137 public: void GetData(unsigned char **_data,
138 unsigned int &_count) const;
139
144 public: void GetRGBData(unsigned char **_data,
145 unsigned int &_count) const;
146
149 public: unsigned int GetWidth() const;
150
153 public: unsigned int GetHeight() const;
154
157 public: unsigned int GetBPP() const;
158
159 // \brief Get the size of a row of pixel
161 public: int GetPitch() const;
162
165 public: std::string GetFilename() const;
166
170
175 public: ignition::math::Color Pixel(const unsigned int _x,
176 const unsigned int _y) const;
177
180 public: ignition::math::Color AvgColor();
181
184 public: ignition::math::Color MaxColor() const;
185
189 public: void Rescale(int _width, int _height);
190
193 public: bool Valid() const;
194
196 private: void GetDataImpl(unsigned char **_data, unsigned int &_count,
197 FIBITMAP *_img) const;
198
201 private: static int count;
202
204 private: FIBITMAP *bitmap;
205
207 private: std::string fullName;
208 };
210 }
211}
212#endif
common
Definition: FuelModelDatabase.hh:37
Encapsulates an image.
Definition: Image.hh:75
unsigned int GetHeight() const
Get the height.
std::string GetFilename() const
Get the full filename of the image.
ignition::math::Color MaxColor() const
Get the max color.
PixelFormat GetPixelFormat() const
Get the pixel format.
bool Valid() const
Returns whether this is a valid image.
virtual ~Image()
Destructor.
unsigned int GetWidth() const
Get the width.
PixelFormat
Pixel formats enumeration.
Definition: Image.hh:78
@ BAYER_GRBG8
Definition: Image.hh:97
@ RGB_FLOAT16
Definition: Image.hh:91
@ RGB_INT8
Definition: Image.hh:82
@ RGB_FLOAT32
Definition: Image.hh:93
@ BAYER_GBRG8
Definition: Image.hh:96
@ L_INT16
Definition: Image.hh:81
@ BGR_INT8
Definition: Image.hh:87
@ R_FLOAT32
Definition: Image.hh:92
@ BAYER_RGGB8
Definition: Image.hh:94
@ L_INT8
Definition: Image.hh:80
@ RGB_INT32
Definition: Image.hh:86
@ RGBA_INT8
Definition: Image.hh:83
@ BGR_INT32
Definition: Image.hh:89
@ UNKNOWN_PIXEL_FORMAT
Definition: Image.hh:79
@ PIXEL_FORMAT_COUNT
Definition: Image.hh:98
@ BGRA_INT8
Definition: Image.hh:84
@ RGB_INT16
Definition: Image.hh:85
@ BGR_INT16
Definition: Image.hh:88
@ R_FLOAT16
Definition: Image.hh:90
@ BAYER_RGGR8
Definition: Image.hh:95
Image(const std::string &_filename="")
Constructor.
void GetData(unsigned char **_data, unsigned int &_count) const
Get the image as a data array.
static Image::PixelFormat ConvertPixelFormat(const std::string &_format)
Convert a string to a Image::PixelFormat.
void GetRGBData(unsigned char **_data, unsigned int &_count) const
Get only the RGB data from the image.
void SetFromData(const unsigned char *_data, unsigned int _width, unsigned int _height, Image::PixelFormat _format)
Set the image from raw data.
void Rescale(int _width, int _height)
Rescale the image.
int Load(const std::string &_filename)
Load an image.
ignition::math::Color AvgColor()
Get the average color.
unsigned int GetBPP() const
Get the size of one pixel in bits.
void SavePNG(const std::string &_filename)
Save the image in PNG format.
ignition::math::Color Pixel(const unsigned int _x, const unsigned int _y) const
Get a pixel color value.
static std::string PixelFormatNames[]
String names for the pixel formats.
Definition: Image.hh:49
Forward declarations for the common classes.
Definition: Animation.hh:27