DaoAI World Inference Client Industrial 2.24.7.0
Loading...
Searching...
No Matches
common.h
Go to the documentation of this file.
1#pragma once
2#include "API_EXPORT.h"
3#include <iostream>
4#include <vector>
5#include "config.h"
6namespace DaoAI
7{
8 namespace DeepLearning
9 {
10 enum class DeviceType
11 {
12 CPU, GPU
13 };
14
15 class Point
16 {
17 public:
18 DAOAI_API Point(const float& x, const float& y, const float& confidence = 0);
21
22 // overload operator<< to print out polygon object
23 friend DAOAI_API std::ostream& operator<<(std::ostream& ss, const Point& point);
24
25 DAOAI_API Point operator+(const Point& point) const;
26 DAOAI_API Point operator-(const Point& point) const;
27
28 float x = 0, y = 0, confidence = 0;
29 };
30
31 class Polygon
32 {
33 public:
34 DAOAI_API Polygon(const std::vector<Point>& points);
37
38 // overload operator<< to print out polygon object
39 friend DAOAI_API std::ostream& operator<<(std::ostream& ss, const Polygon& polygon);
40
41 // overload operator<< to print out polygon object
42 friend DAOAI_API std::stringstream& operator<<(std::stringstream& ss, const Polygon& polygon);
43
44 std::vector<Point> points;
45 };
46
47 class Box
48 {
49 public:
50
51 enum class Type
52 {
53 XYXY, XYWH
54 };
55
61 DAOAI_API Box(const Point& p1, const Point& p2, const float& angle = 0);
62
70 DAOAI_API Box(const float& a1, const float& a2, const float& a3, const float& a4, const float& angle = 0, const Type& type = Type::XYXY);
71
73
74#ifndef BUILD_INFERNCE_CLIENT
79#endif // !BUILD_INFERNCE_CLIENT
80
81 DAOAI_API std::string toString() const;
82
83 // overload operator<< to print out polygon object
84 friend DAOAI_API std::ostream& operator<<(std::ostream& ss, const Box& box);
85
86 // overload operator<< to print out polygon object
87 friend DAOAI_API std::stringstream& operator<<(std::stringstream& ss, const Box& box);
88
92 DAOAI_API float h() const;
93
97 DAOAI_API float w() const;
98
102 DAOAI_API float x1() const;
103
107 DAOAI_API float y1() const;
108
112 DAOAI_API float x2() const;
113
117 DAOAI_API float y2() const;
118
122 DAOAI_API float angle() const;
123
127 DAOAI_API float area() const;
128
129#ifndef BUILD_INFERENCE_CLIENT
133 DAOAI_API float iou(const Box& box) const;
134
138 DAOAI_API Box intersect(const Box& box) const;
139
143 DAOAI_API Box merge(const Box& box) const;
144
145
151 DAOAI_API bool contains(const Box& box) const;
152
153#endif // !BUILD_INFERENCE_CLIENT
154
159 DAOAI_API Box toType(const Type& type) const;
160
161 std::vector<float> data;
163 };
164
165#ifndef BUILD_INFERENCE_CLIENT
166 class Image
167 {
168 public:
169 enum class Type
170 {
171 RGB, BGR, GRAYSCALE
172 };
173
181 DAOAI_API Image(const int& image_height, const int& image_width, const Image::Type& type, void* data);
182
190 DAOAI_API Image(const int& image_height, const int& image_width, const Image::Type& type, std::shared_ptr<uint8_t[]> data_ptr);
191
192
197 DAOAI_API Image(const std::string& file_path);
198
199 DAOAI_API virtual ~Image();
200
201 // create a deep copy of the Image object
202 DAOAI_API Image clone() const;
203
204 DAOAI_API uint8_t* getData() const;
205
206 int width, height;
207 Type type;
208 private:
209 uint8_t *data;
210 std::shared_ptr<uint8_t[]> data_ptr;
211
212 };
213
214 class Mask
215 {
216 public:
217 DAOAI_API Mask();
218
219 DAOAI_API Mask(const Image& image);
220
221 Mask(const Image& image, const Box& location, const int& image_height, const int& image_width);
222
223 DAOAI_API ~Mask();
224
225 DAOAI_API Mask merge(const Mask& mask) const;
226
227 DAOAI_API std::vector<Polygon> toPolygons() const;
228
229 DAOAI_API long long area() const;
230
231 DAOAI_API Image toImage() const;
232
233 int width, height;
234 private:
235 std::vector<Image> image_data;
236 std::vector<Box> locations;
237 };
238#else
239 class Mask
240 {
241 public:
243 Mask(const std::string& base64_image_data);
244 Mask(const std::vector<Polygon> polygon_data);
245
246 // either polygon_data or base64_image_data should be non-null
247 std::unique_ptr<std::vector<Polygon>> polygon_data;
248 std::unique_ptr<std::string> base64_image_data;
249 };
250#endif // !BUILD_INFERENCE_CLIENT
251 }
252}
#define DAOAI_API
Definition API_EXPORT.h:6
Definition common.h:48
DAOAI_API Polygon toPolygon() const
Type type
Definition common.h:162
DAOAI_API std::string toString() const
DAOAI_API Box(const float &a1, const float &a2, const float &a3, const float &a4, const float &angle=0, const Type &type=Type::XYXY)
DAOAI_API float h() const
std::vector< float > data
Definition common.h:161
DAOAI_API Box(const Point &p1, const Point &p2, const float &angle=0)
DAOAI_API float x1() const
Type
Definition common.h:52
DAOAI_API float w() const
DAOAI_API float area() const
DAOAI_API Box toType(const Type &type) const
friend DAOAI_API std::ostream & operator<<(std::ostream &ss, const Box &box)
DAOAI_API float x2() const
DAOAI_API float angle() const
DAOAI_API float y2() const
friend DAOAI_API std::stringstream & operator<<(std::stringstream &ss, const Box &box)
DAOAI_API float y1() const
Definition common.h:240
std::unique_ptr< std::string > base64_image_data
Definition common.h:248
Mask(const std::vector< Polygon > polygon_data)
Mask(const std::string &base64_image_data)
std::unique_ptr< std::vector< Polygon > > polygon_data
Definition common.h:247
Definition common.h:16
DAOAI_API Point operator-(const Point &point) const
friend DAOAI_API std::ostream & operator<<(std::ostream &ss, const Point &point)
DAOAI_API Point operator+(const Point &point) const
float x
Definition common.h:28
DAOAI_API Point(const float &x, const float &y, const float &confidence=0)
float y
Definition common.h:28
float confidence
Definition common.h:28
Definition common.h:32
DAOAI_API Polygon(const std::vector< Point > &points)
friend DAOAI_API std::stringstream & operator<<(std::stringstream &ss, const Polygon &polygon)
std::vector< Point > points
Definition common.h:44
friend DAOAI_API std::ostream & operator<<(std::ostream &ss, const Polygon &polygon)
DeviceType
Definition common.h:11
Definition common.h:7