ImageManipConfig.cpp
Go to the documentation of this file.
1 // First, as other headers may include <cmath>
2 #define _USE_MATH_DEFINES
4 
5 #include <cmath>
6 
7 namespace dai {
8 
9 std::shared_ptr<RawBuffer> ImageManipConfig::serialize() const {
10  return raw;
11 }
12 
13 ImageManipConfig::ImageManipConfig() : Buffer(std::make_shared<RawImageManipConfig>()), cfg(*dynamic_cast<RawImageManipConfig*>(raw.get())) {}
14 ImageManipConfig::ImageManipConfig(std::shared_ptr<RawImageManipConfig> ptr) : Buffer(std::move(ptr)), cfg(*dynamic_cast<RawImageManipConfig*>(raw.get())) {}
15 
16 // helpers
17 // Functions to set properties
18 ImageManipConfig& ImageManipConfig::setCropRect(float xmin, float ymin, float xmax, float ymax) {
19  // Enable crop stage
20  cfg.enableCrop = true;
21 
22  // Disable center crop
24 
25  // Set crop rect - limit to bounds beforehand
26  cfg.cropConfig.cropRect.xmin = std::max(xmin, 0.0f);
27  cfg.cropConfig.cropRect.ymin = std::max(ymin, 0.0f);
28  cfg.cropConfig.cropRect.xmax = std::min(xmax, 1.0f);
29  cfg.cropConfig.cropRect.ymax = std::min(ymax, 1.0f);
30  return *this;
31 }
32 
33 ImageManipConfig& ImageManipConfig::setCropRect(std::tuple<float, float, float, float> coordinates) {
34  setCropRect(std::get<0>(coordinates), std::get<1>(coordinates), std::get<2>(coordinates), std::get<3>(coordinates));
35  return *this;
36 }
37 
39  // Enable crop stage and extended flags
40  cfg.enableCrop = true;
42 
44  cfg.cropConfig.normalizedCoords = normalizedCoords;
45  return *this;
46 }
47 
48 ImageManipConfig& ImageManipConfig::setWarpTransformFourPoints(std::vector<Point2f> pt, bool normalizedCoords) {
49  // Enable resize stage and extended flags
50  cfg.enableResize = true;
54  cfg.resizeConfig.normalizedCoords = normalizedCoords;
55  return *this;
56 }
57 
59  // Enable resize stage and extended flags
60  cfg.enableResize = true;
63  return *this;
64 }
65 
67  // Enable resize stage and extended flags
68  cfg.enableResize = true;
70  return *this;
71 }
72 
74  // Enable resize stage and extended flags
75  cfg.enableResize = true;
77  cfg.resizeConfig.bgRed = red;
78  cfg.resizeConfig.bgGreen = green;
79  cfg.resizeConfig.bgBlue = blue;
80  return *this;
81 }
82 
83 ImageManipConfig& ImageManipConfig::setCenterCrop(float ratio, float whRatio) {
84  // Enable crop stage
85  cfg.enableCrop = true;
86 
87  // Enable center center crop
89 
90  // Set crop center crop config
91  cfg.cropConfig.cropRatio = ratio;
92  // Limit to max 1.0f and disallow setting zero ratio
93  if(ratio > 1.0f || ratio < 0.0f) {
94  cfg.cropConfig.cropRatio = 1.0f;
95  }
96 
98  return *this;
99 }
100 
102  cfg.enableResize = true;
105  return *this;
106 }
107 
109  static constexpr float rad2degFactor = static_cast<float>(180 / M_PI);
110  setRotationDegrees(rad * rad2degFactor);
111  return *this;
112 }
113 
115  // Enable resize stage
116  cfg.enableResize = true;
117 
118  // Disable lock aspect ratio
120 
121  // Set resize config
122  cfg.resizeConfig.width = w;
123  cfg.resizeConfig.height = h;
124  return *this;
125 }
126 
128  setResize(std::get<0>(size), std::get<1>(size));
129  return *this;
130 }
131 
132 ImageManipConfig& ImageManipConfig::setResizeThumbnail(int w, int h, int bgRed, int bgGreen, int bgBlue) {
133  // Enable resize stage
134  cfg.enableResize = true;
135 
136  // Set resize config
137  cfg.resizeConfig.width = w;
138  cfg.resizeConfig.height = h;
139 
140  // Set lock aspect ratio
142 
143  // Set background colors
144  cfg.resizeConfig.bgRed = bgRed;
145  cfg.resizeConfig.bgGreen = bgGreen;
146  cfg.resizeConfig.bgBlue = bgBlue;
147  return *this;
148 }
149 
150 ImageManipConfig& ImageManipConfig::setResizeThumbnail(std::tuple<int, int> size, int bgRed, int bgGreen, int bgBlue) {
151  setResizeThumbnail(std::get<0>(size), std::get<1>(size), bgRed, bgGreen, bgBlue);
152  return *this;
153 }
154 
156  // Enable format stage
157  cfg.enableFormat = true;
158 
159  // Set type format
161  return *this;
162 }
163 
165  int max = maxf;
166  if(max < 0 || max >= 256) throw std::invalid_argument("Colormap max argument must be between 0 and 255");
167 
168  // Enable format stage
169  cfg.enableFormat = true;
170 
171  // Set type format
172  cfg.formatConfig.colormap = colormap;
175  return *this;
176 }
177 
179  if(max < 0 || max >= 256) throw std::invalid_argument("Colormap max argument must be between 0 and 255");
180 
181  // Enable format stage
182  cfg.enableFormat = true;
183 
184  // Set type format
185  cfg.formatConfig.colormap = colormap;
188  return *this;
189 }
190 
192  if(max < 0 || max >= 256) throw std::invalid_argument("Colormap max argument must be between 0 and 255");
193  if(min < 0 || min >= 256) throw std::invalid_argument("Colormap min argument must be between 0 and 255");
194 
195  // Enable format stage
196  cfg.enableFormat = true;
197 
198  // Set type format
199  cfg.formatConfig.colormap = colormap;
202  return *this;
203 }
204 
206  // Enable format stage
207  cfg.enableFormat = true;
208 
209  // Set pixel format
211  return *this;
212 }
213 
215  // Enable format stage
216  cfg.enableFormat = true;
217 
218  // Set pixel format
220 }
221 
223  cfg.reusePreviousImage = reuse;
224  return *this;
225 }
226 
228  cfg.skipCurrentImage = skip;
229  return *this;
230 }
231 
233  // Set whether to keep aspect ratio or not
235  return *this;
236 }
237 
239  cfg.interpolation = interpolation;
240  return *this;
241 }
242 
243 // Functions to retrieve properties
245  return cfg.cropConfig.cropRect.xmin;
246 }
247 
249  return cfg.cropConfig.cropRect.ymin;
250 }
251 
253  return cfg.cropConfig.cropRect.xmax;
254 }
255 
257  return cfg.cropConfig.cropRect.ymax;
258 }
259 
261  return cfg.resizeConfig.width;
262 }
263 
265  return cfg.resizeConfig.height;
266 }
267 
269  return cfg.cropConfig;
270 }
271 
273  return cfg.resizeConfig;
274 }
275 
277  return cfg.formatConfig;
278 }
279 
282 }
283 
285  return cfg.formatConfig.colormap;
286 }
287 
289  return cfg;
290 }
291 
293  cfg = config;
294  return *this;
295 }
296 
298  return cfg.interpolation;
299 }
300 
301 } // namespace dai
dai::RawImageManipConfig::cropConfig
CropConfig cropConfig
Definition: RawImageManipConfig.hpp:101
dai::ImageManipConfig::getCropYMax
float getCropYMax() const
Definition: ImageManipConfig.cpp:256
dai::RawImageManipConfig::CropConfig::cropRect
CropRect cropRect
Definition: RawImageManipConfig.hpp:30
dai::RawImageManipConfig::FormatConfig::flipVertical
bool flipVertical
Definition: RawImageManipConfig.hpp:93
dai::RawImageManipConfig::CropConfig::widthHeightAspectRatio
float widthHeightAspectRatio
Definition: RawImageManipConfig.hpp:35
dai::RotatedRect
RotatedRect structure.
Definition: RotatedRect.hpp:14
dai::RawImageManipConfig::ResizeConfig
Definition: RawImageManipConfig.hpp:46
dai::ImageManipConfig::getResizeConfig
ResizeConfig getResizeConfig() const
Definition: ImageManipConfig.cpp:272
dai::RawImageManipConfig::FormatConfig::flipHorizontal
bool flipHorizontal
Definition: RawImageManipConfig.hpp:92
dai::RawImageManipConfig::ResizeConfig::rotationAngleDeg
float rotationAngleDeg
Definition: RawImageManipConfig.hpp:64
DAI_SPAN_NAMESPACE_NAME::get
constexpr auto get(span< E, S > s) -> decltype(s[N])
Definition: span.hpp:491
dai::RawImageManipConfig::ResizeConfig::keepAspectRatio
bool keepAspectRatio
Definition: RawImageManipConfig.hpp:70
dai::ImageManipConfig::setCropRect
ImageManipConfig & setCropRect(float xmin, float ymin, float xmax, float ymax)
Definition: ImageManipConfig.cpp:18
dai::RawImageManipConfig::enableResize
bool enableResize
Definition: RawImageManipConfig.hpp:106
dai::ImageManipConfig::ImageManipConfig
ImageManipConfig()
Construct ImageManipConfig message.
Definition: ImageManipConfig.cpp:13
dai::RawImageManipConfig::ResizeConfig::normalizedCoords
bool normalizedCoords
Definition: RawImageManipConfig.hpp:53
dai::RawImageManipConfig::ResizeConfig::enableWarpMatrix
bool enableWarpMatrix
Definition: RawImageManipConfig.hpp:57
dai::RawImageManipConfig::reusePreviousImage
bool reusePreviousImage
Definition: RawImageManipConfig.hpp:111
dai::RawImageManipConfig::ResizeConfig::warpBorderReplicate
bool warpBorderReplicate
Definition: RawImageManipConfig.hpp:61
dai::ImageManipConfig::cfg
RawImageManipConfig & cfg
Definition: ImageManipConfig.hpp:25
dai::ImageManipConfig::setCenterCrop
ImageManipConfig & setCenterCrop(float ratio, float whRatio=1.0f)
Definition: ImageManipConfig.cpp:83
dai::RawImageManipConfig::CropConfig::enableRotatedRect
bool enableRotatedRect
Definition: RawImageManipConfig.hpp:37
dai::RawImageManipConfig::CropConfig
Definition: RawImageManipConfig.hpp:29
dai::RawImgFrame::Type
Type
Definition: RawImgFrame.hpp:13
dai::RawImageManipConfig::formatConfig
FormatConfig formatConfig
Definition: RawImageManipConfig.hpp:103
dai::ImageManipConfig::getResizeHeight
int getResizeHeight() const
Definition: ImageManipConfig.cpp:264
dai::ImageManipConfig::getCropXMax
float getCropXMax() const
Definition: ImageManipConfig.cpp:252
dai::RawImageManipConfig
RawImageManipConfig structure.
Definition: RawImageManipConfig.hpp:20
dai::RawImageManipConfig::CropConfig::normalizedCoords
bool normalizedCoords
Definition: RawImageManipConfig.hpp:40
dai::RawImageManipConfig::FormatConfig::colormapMax
int colormapMax
Definition: RawImageManipConfig.hpp:96
dai::ImageManipConfig::setRotationRadians
ImageManipConfig & setRotationRadians(float rad)
Definition: ImageManipConfig.cpp:108
dai::RawImageManipConfig::CropRect::xmax
float xmax
Definition: RawImageManipConfig.hpp:24
dai::RawImageManipConfig::CropConfig::cropRotatedRect
RotatedRect cropRotatedRect
Definition: RawImageManipConfig.hpp:31
dai::ImageManipConfig::set
ImageManipConfig & set(dai::RawImageManipConfig config)
Definition: ImageManipConfig.cpp:292
dai::ImageManipConfig::getCropYMin
float getCropYMin() const
Definition: ImageManipConfig.cpp:248
dai::RawImageManipConfig::ResizeConfig::height
int height
Definition: RawImageManipConfig.hpp:47
dai::RawImageManipConfig::ResizeConfig::lockAspectRatioFill
bool lockAspectRatioFill
Definition: RawImageManipConfig.hpp:48
dai::RawImageManipConfig::FormatConfig::type
RawImgFrame::Type type
Definition: RawImageManipConfig.hpp:91
dai::RawImageManipConfig::ResizeConfig::bgBlue
char bgBlue
Definition: RawImageManipConfig.hpp:49
dai::ImageManipConfig::setHorizontalFlip
ImageManipConfig & setHorizontalFlip(bool flip)
Definition: ImageManipConfig.cpp:205
dai::ImageManipConfig::setResize
ImageManipConfig & setResize(int w, int h)
Definition: ImageManipConfig.cpp:114
dai::Interpolation
Interpolation
Definition: Interpolation.hpp:10
dai::RawImageManipConfig::resizeConfig
ResizeConfig resizeConfig
Definition: RawImageManipConfig.hpp:102
dai::RawImageManipConfig::CropRect::ymax
float ymax
Definition: RawImageManipConfig.hpp:24
DAI_SPAN_NAMESPACE_NAME::detail::size
constexpr auto size(const C &c) -> decltype(c.size())
Definition: span.hpp:167
dai::ImageManipConfig::setFrameType
ImageManipConfig & setFrameType(ImgFrame::Type name)
Definition: ImageManipConfig.cpp:155
dai::Colormap
Colormap
Camera sensor type.
Definition: Colormap.hpp:8
dai::ImageManipConfig::setReusePreviousImage
ImageManipConfig & setReusePreviousImage(bool reuse)
Definition: ImageManipConfig.cpp:222
dai::RawImageManipConfig::ResizeConfig::bgGreen
char bgGreen
Definition: RawImageManipConfig.hpp:49
dai::ImageManipConfig::getCropConfig
CropConfig getCropConfig() const
Definition: ImageManipConfig.cpp:268
dai::RawImageManipConfig::FormatConfig::colormap
Colormap colormap
Definition: RawImageManipConfig.hpp:94
dai::ImageManipConfig::setCropRotatedRect
ImageManipConfig & setCropRotatedRect(RotatedRect rr, bool normalizedCoords=true)
Definition: ImageManipConfig.cpp:38
dai::ImageManipConfig::setSkipCurrentImage
ImageManipConfig & setSkipCurrentImage(bool skip)
Definition: ImageManipConfig.cpp:227
dai::RawImageManipConfig::FormatConfig::colormapMin
int colormapMin
Definition: RawImageManipConfig.hpp:95
dai::ImageManipConfig::setRotationDegrees
ImageManipConfig & setRotationDegrees(float deg)
Definition: ImageManipConfig.cpp:101
dai::RawImageManipConfig::ResizeConfig::bgRed
char bgRed
Definition: RawImageManipConfig.hpp:49
dai::RawImageManipConfig::enableFormat
bool enableFormat
Definition: RawImageManipConfig.hpp:107
nanorpc::core::detail::pack::meta::type
type
Definition: pack_meta.h:26
dai::ImageManipConfig::setWarpBorderReplicatePixels
ImageManipConfig & setWarpBorderReplicatePixels()
Definition: ImageManipConfig.cpp:66
dai::RawImageManipConfig::CropRect::xmin
float xmin
Definition: RawImageManipConfig.hpp:24
dai::RawImageManipConfig::CropRect::ymin
float ymin
Definition: RawImageManipConfig.hpp:24
dai::Buffer
Base message - buffer of binary data.
Definition: Buffer.hpp:13
dai::ImageManipConfig::getFormatConfig
FormatConfig getFormatConfig() const
Definition: ImageManipConfig.cpp:276
dai::ImageManipConfig::setWarpTransformFourPoints
ImageManipConfig & setWarpTransformFourPoints(std::vector< Point2f > pt, bool normalizedCoords)
Definition: ImageManipConfig.cpp:48
dai::RawImageManipConfig::ResizeConfig::enableRotation
bool enableRotation
Definition: RawImageManipConfig.hpp:65
dai::RawImageManipConfig::enableCrop
bool enableCrop
Definition: RawImageManipConfig.hpp:105
dai::ImageManipConfig::getResizeWidth
int getResizeWidth() const
Definition: ImageManipConfig.cpp:260
dai::RawImageManipConfig::skipCurrentImage
bool skipCurrentImage
Definition: RawImageManipConfig.hpp:112
dai::ImageManipConfig::getColormap
Colormap getColormap() const
Definition: ImageManipConfig.cpp:284
ImageManipConfig.hpp
std
Definition: Node.hpp:366
dai::ImageManipConfig::getInterpolation
dai::Interpolation getInterpolation() const
Retrieve which interpolation method to use.
Definition: ImageManipConfig.cpp:297
dai::RawImageManipConfig::interpolation
Interpolation interpolation
Interpolation type to use.
Definition: RawImageManipConfig.hpp:115
dai::RawImageManipConfig::ResizeConfig::width
int width
Definition: RawImageManipConfig.hpp:47
dai::ImageManipConfig::isResizeThumbnail
bool isResizeThumbnail() const
Definition: ImageManipConfig.cpp:280
dai::RawImageManipConfig::CropConfig::enableCenterCropRectangle
bool enableCenterCropRectangle
Definition: RawImageManipConfig.hpp:33
dai::ImageManipConfig::getCropXMin
float getCropXMin() const
Definition: ImageManipConfig.cpp:244
dai::ImageManipConfig::setVerticalFlip
void setVerticalFlip(bool flip)
Definition: ImageManipConfig.cpp:214
dai::ImageManipConfig::setKeepAspectRatio
ImageManipConfig & setKeepAspectRatio(bool keep)
Definition: ImageManipConfig.cpp:232
dai::ImageManipConfig
Definition: ImageManipConfig.hpp:23
dai::ImageManipConfig::setWarpBorderFillColor
ImageManipConfig & setWarpBorderFillColor(int red, int green, int blue)
Definition: ImageManipConfig.cpp:73
dai::ADatatype::raw
std::shared_ptr< RawBuffer > raw
Definition: ADatatype.hpp:15
dai::RawImageManipConfig::FormatConfig
Definition: RawImageManipConfig.hpp:90
dai::RawImageManipConfig::CropConfig::cropRatio
float cropRatio
Definition: RawImageManipConfig.hpp:35
dai::RawImageManipConfig::ResizeConfig::warpFourPoints
std::vector< Point2f > warpFourPoints
Definition: RawImageManipConfig.hpp:52
dai::ImageManipConfig::setInterpolation
ImageManipConfig & setInterpolation(dai::Interpolation interpolation)
Definition: ImageManipConfig.cpp:238
dai::ImageManipConfig::setColormap
ImageManipConfig & setColormap(Colormap colormap, int min, int max)
Definition: ImageManipConfig.cpp:191
dai::RawImageManipConfig::ResizeConfig::enableWarp4pt
bool enableWarp4pt
Definition: RawImageManipConfig.hpp:54
dai
Definition: CameraExposureOffset.hpp:6
dai::ImageManipConfig::setResizeThumbnail
ImageManipConfig & setResizeThumbnail(int w, int h, int bgRed=0, int bgGreen=0, int bgBlue=0)
Definition: ImageManipConfig.cpp:132
dai::ImageManipConfig::get
dai::RawImageManipConfig get() const
Definition: ImageManipConfig.cpp:288
dai::ImageManipConfig::setWarpTransformMatrix3x3
ImageManipConfig & setWarpTransformMatrix3x3(std::vector< float > mat)
Definition: ImageManipConfig.cpp:58
dai::ImageManipConfig::serialize
std::shared_ptr< RawBuffer > serialize() const override
Definition: ImageManipConfig.cpp:9
dai::RawImageManipConfig::ResizeConfig::warpMatrix3x3
std::vector< float > warpMatrix3x3
Definition: RawImageManipConfig.hpp:56


depthai
Author(s): Martin Peterlin
autogenerated on Sat Mar 22 2025 02:58:19