0.4.3
AlsonMat.h
浏览该文件的文档.
1//
2// Created by ALSON08 on 2022/8/30.
3//
4
5#ifndef ALSON_CLASSIC_BASE_ENTITY_ALSON_MAT_H
6#define ALSON_CLASSIC_BASE_ENTITY_ALSON_MAT_H
7
8
9// std
10#include <cstdint>
11#include <string>
12#include <memory>
13
14// alson
16
17
18#define ALSON_MAT_CN_SHIFT 3
19#define ALSON_MAT_DEPTH_MAX (1 << ALSON_MAT_CN_SHIFT)
20
21#define ALSON_MAT_8U 0
22#define ALSON_MAT_8S 1
23#define ALSON_MAT_16U 2
24#define ALSON_MAT_16S 3
25#define ALSON_MAT_32S 4
26#define ALSON_MAT_32F 5
27#define ALSON_MAT_64F 6
28#define ALSON_MAT_16F 7
29
30#define ALSON_MAT_MAT_DEPTH_MASK (ALSON_MAT_DEPTH_MAX - 1)
31#define ALSON_MAT_MAT_DEPTH(flags) ((flags) & ALSON_MAT_MAT_DEPTH_MASK)
32
33#define ALSON_MAT_MAKETYPE(depth, cn) (ALSON_MAT_MAT_DEPTH(depth) + (((cn)-1) << ALSON_MAT_CN_SHIFT))
34#define ALSON_MAT_MAKE_TYPE ALSON_MAT_MAKETYPE
35
36
50#define ALSON_MAT_8UC1 ALSON_MAT_MAKETYPE(ALSON_MAT_8U,1)
51#define ALSON_MAT_8UC2 ALSON_MAT_MAKETYPE(ALSON_MAT_8U,2)
52#define ALSON_MAT_8UC3 ALSON_MAT_MAKETYPE(ALSON_MAT_8U,3)
53#define ALSON_MAT_8UC4 ALSON_MAT_MAKETYPE(ALSON_MAT_8U,4)
54#define ALSON_MAT_8UC(n) ALSON_MAT_MAKETYPE(ALSON_MAT_8U,(n))
55
56#define ALSON_MAT_8SC1 ALSON_MAT_MAKETYPE(ALSON_MAT_8S,1)
57#define ALSON_MAT_8SC2 ALSON_MAT_MAKETYPE(ALSON_MAT_8S,2)
58#define ALSON_MAT_8SC3 ALSON_MAT_MAKETYPE(ALSON_MAT_8S,3)
59#define ALSON_MAT_8SC4 ALSON_MAT_MAKETYPE(ALSON_MAT_8S,4)
60#define ALSON_MAT_8SC(n) ALSON_MAT_MAKETYPE(ALSON_MAT_8S,(n))
61
62#define ALSON_MAT_16UC1 ALSON_MAT_MAKETYPE(ALSON_MAT_16U,1)
63#define ALSON_MAT_16UC2 ALSON_MAT_MAKETYPE(ALSON_MAT_16U,2)
64#define ALSON_MAT_16UC3 ALSON_MAT_MAKETYPE(ALSON_MAT_16U,3)
65#define ALSON_MAT_16UC4 ALSON_MAT_MAKETYPE(ALSON_MAT_16U,4)
66#define ALSON_MAT_16UC(n) ALSON_MAT_MAKETYPE(ALSON_MAT_16U,(n))
67
68#define ALSON_MAT_16SC1 ALSON_MAT_MAKETYPE(ALSON_MAT_16S,1)
69#define ALSON_MAT_16SC2 ALSON_MAT_MAKETYPE(ALSON_MAT_16S,2)
70#define ALSON_MAT_16SC3 ALSON_MAT_MAKETYPE(ALSON_MAT_16S,3)
71#define ALSON_MAT_16SC4 ALSON_MAT_MAKETYPE(ALSON_MAT_16S,4)
72#define ALSON_MAT_16SC(n) ALSON_MAT_MAKETYPE(ALSON_MAT_16S,(n))
73
74#define ALSON_MAT_32SC1 ALSON_MAT_MAKETYPE(ALSON_MAT_32S,1)
75#define ALSON_MAT_32SC2 ALSON_MAT_MAKETYPE(ALSON_MAT_32S,2)
76#define ALSON_MAT_32SC3 ALSON_MAT_MAKETYPE(ALSON_MAT_32S,3)
77#define ALSON_MAT_32SC4 ALSON_MAT_MAKETYPE(ALSON_MAT_32S,4)
78#define ALSON_MAT_32SC(n) ALSON_MAT_MAKETYPE(ALSON_MAT_32S,(n))
79
80#define ALSON_MAT_32FC1 ALSON_MAT_MAKETYPE(ALSON_MAT_32F,1)
81#define ALSON_MAT_32FC2 ALSON_MAT_MAKETYPE(ALSON_MAT_32F,2)
82#define ALSON_MAT_32FC3 ALSON_MAT_MAKETYPE(ALSON_MAT_32F,3)
83#define ALSON_MAT_32FC4 ALSON_MAT_MAKETYPE(ALSON_MAT_32F,4)
84#define ALSON_MAT_32FC(n) ALSON_MAT_MAKETYPE(ALSON_MAT_32F,(n))
85
86#define ALSON_MAT_64FC1 ALSON_MAT_MAKETYPE(ALSON_MAT_64F,1)
87#define ALSON_MAT_64FC2 ALSON_MAT_MAKETYPE(ALSON_MAT_64F,2)
88#define ALSON_MAT_64FC3 ALSON_MAT_MAKETYPE(ALSON_MAT_64F,3)
89#define ALSON_MAT_64FC4 ALSON_MAT_MAKETYPE(ALSON_MAT_64F,4)
90#define ALSON_MAT_64FC(n) ALSON_MAT_MAKETYPE(ALSON_MAT_64F,(n))
91
92#define ALSON_MAT_16FC1 ALSON_MAT_MAKETYPE(ALSON_MAT_16F,1)
93#define ALSON_MAT_16FC2 ALSON_MAT_MAKETYPE(ALSON_MAT_16F,2)
94#define ALSON_MAT_16FC3 ALSON_MAT_MAKETYPE(ALSON_MAT_16F,3)
95#define ALSON_MAT_16FC4 ALSON_MAT_MAKETYPE(ALSON_MAT_16F,4)
96#define ALSON_MAT_16FC(n) ALSON_MAT_MAKETYPE(ALSON_MAT_16F,(n))
99namespace ALSON {
100
133
134public:
144 enum Depth {
154 DEPTH_8U = 0,
164 DEPTH_8S = 1,
174 DEPTH_16U = 2,
184 DEPTH_16S = 3,
194 DEPTH_32S = 4,
204 DEPTH_32F = 5,
214 DEPTH_64F = 6,
224 DEPTH_16F = 7
225 };
226
227public:
240
258 AlsonMat(int r, int c, int t);
259
282 AlsonMat(int r, int c, int t, uint8_t* d);
283
286 AlsonMat(AlsonMat&&) noexcept;
287 AlsonMat& operator=(AlsonMat&&) noexcept;
288
290
291public:
311 static AlsonMat create(int rows, int cols, int type);
312
334 static AlsonMat create(int rows, int cols, int type, uint8_t* data);
335
349 AlsonMat clone();
350
381 static AlsonMat load(const std::string& filename);
382
412 void save(const std::string& filename);
413
427 uint8_t* data() const { return m_data; }
428
445 void setData(uint8_t* data) { m_data = data; }
446
447public:
459 int rows;
471 int cols;
483 int type;
495 int depth;
531 size_t total;
532
533private:
534 uint8_t* m_data;
535 std::allocator<uint8_t> m_allocator;
536 int* m_refCount;
537};
538
539
540} // namespace ALSON
541
542
543#endif // !ALSON_CLASSIC_BASE_ENTITY_ALSON_MAT_H
AlsonMat(AlsonMat &&) noexcept
AlsonMat(int r, int c, int t)
AlsonMat(const AlsonMat &)
void setData(uint8_t *data)
AlsonMat(int r, int c, int t, uint8_t *d)
AlsonMat & operator=(const AlsonMat &)
#define ALSON_API
My Custom Doxygen Footer
Data Processing Programmer's Guide 0.4.3
Copyright © 2014-2024 Henan Alson Intelligent Technology Co, Ltd 河南埃尔森智能科技有限公司 版权所有 豫ICP备15002212号