1
1
#include "core.h"
2
2
#include "imgproc.h"
3
3
4
- // Define a Python reference to the function we'll make available.
5
- // See example.cpp for the definition.
4
+ ////////////////////////////////////////////////////////////////////////////////
5
+ // Python references to OpenCV functions
6
+ ////////////////////////////////////////////////////////////////////////////////
7
+
8
+ // OpenCV core module
6
9
static MP_DEFINE_CONST_FUN_OBJ_KW (cv2_core_inRange_obj , 3 , cv2_core_inRange ) ;
7
10
static MP_DEFINE_CONST_FUN_OBJ_KW (cv2_core_max_obj , 2 , cv2_core_max ) ;
8
11
static MP_DEFINE_CONST_FUN_OBJ_KW (cv2_core_min_obj , 2 , cv2_core_min ) ;
12
+
13
+ // OpenCV imgproc module
9
14
static MP_DEFINE_CONST_FUN_OBJ_KW (cv2_imgproc_cvtColor_obj , 2 , cv2_imgproc_cvtColor ) ;
15
+ static MP_DEFINE_CONST_FUN_OBJ_KW (cv2_imgproc_dilate_obj , 2 , cv2_imgproc_dilate ) ;
16
+ static MP_DEFINE_CONST_FUN_OBJ_KW (cv2_imgproc_erode_obj , 2 , cv2_imgproc_erode ) ;
17
+ static MP_DEFINE_CONST_FUN_OBJ_KW (cv2_imgproc_getStructuringElement_obj , 2 , cv2_imgproc_getStructuringElement ) ;
18
+ static MP_DEFINE_CONST_FUN_OBJ_KW (cv2_imgproc_morphologyEx_obj , 3 , cv2_imgproc_morphologyEx ) ;
10
19
11
- // Define all attributes of the module.
12
- // Table entries are key/value pairs of the attribute name (a string)
13
- // and the MicroPython object reference.
14
- // All identifiers and strings are written as MP_QSTR_xxx and will be
15
- // optimized to word-sized integers by the build system (interned strings).
20
+ ////////////////////////////////////////////////////////////////////////////////
21
+ // Module attributes
22
+ ////////////////////////////////////////////////////////////////////////////////
16
23
static const mp_rom_map_elem_t cv2_module_globals_table [] = {
17
24
////////////////////////////////////////////////////////////////////////////
18
25
// Module name
@@ -24,22 +31,38 @@ static const mp_rom_map_elem_t cv2_module_globals_table[] = {
24
31
// Constants
25
32
////////////////////////////////////////////////////////////////////////////
26
33
27
- // Color conversion codes. These are defined in <opencv2/imgproc.hpp>,
28
- // however we can't include that header here because it's C++ and this is C,
29
- // so we have to redefine them here. Only a subset of the most common
30
- // conversions are included here.
31
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_BGR2BGRA ), MP_ROM_INT (0 ) },
32
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_RGB2RGBA ), MP_ROM_INT (0 ) },
33
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_BGRA2BGR ), MP_ROM_INT (1 ) },
34
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_RGBA2RGB ), MP_ROM_INT (1 ) },
35
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_BGR2RGBA ), MP_ROM_INT (2 ) },
36
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_RGB2BGRA ), MP_ROM_INT (2 ) },
37
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_RGBA2BGR ), MP_ROM_INT (3 ) },
38
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_BGRA2RGB ), MP_ROM_INT (3 ) },
39
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_BGR2RGB ), MP_ROM_INT (4 ) },
40
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_RGB2BGR ), MP_ROM_INT (4 ) },
41
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_BGRA2RGBA ), MP_ROM_INT (5 ) },
42
- { MP_ROM_QSTR (MP_QSTR_COLOR_COLOR_RGBA2BGRA ), MP_ROM_INT (5 ) },
34
+ // These constants are defined by in OpenCV's header files, however we can't
35
+ // include them here because it's C++ and this is C, so we have to redefine
36
+ // them here. Only a subset of the most common conversions are included.
37
+
38
+ // Morphology operation types, from opencv2/imgproc.hpp
39
+ { MP_ROM_QSTR (MP_QSTR_MORPH_ERODE ), MP_ROM_INT (0 ) },
40
+ { MP_ROM_QSTR (MP_QSTR_MORPH_DILATE ), MP_ROM_INT (1 ) },
41
+ { MP_ROM_QSTR (MP_QSTR_MORPH_OPEN ), MP_ROM_INT (2 ) },
42
+ { MP_ROM_QSTR (MP_QSTR_MORPH_CLOSE ), MP_ROM_INT (3 ) },
43
+ { MP_ROM_QSTR (MP_QSTR_MORPH_GRADIENT ), MP_ROM_INT (4 ) },
44
+ { MP_ROM_QSTR (MP_QSTR_MORPH_TOPHAT ), MP_ROM_INT (5 ) },
45
+ { MP_ROM_QSTR (MP_QSTR_MORPH_BLACKHAT ), MP_ROM_INT (6 ) },
46
+ { MP_ROM_QSTR (MP_QSTR_MORPH_HITMISS ), MP_ROM_INT (7 ) },
47
+
48
+ // Morphology shapes, from opencv2/imgproc.hpp
49
+ { MP_ROM_QSTR (MP_QSTR_MORPH_RECT ), MP_ROM_INT (0 ) },
50
+ { MP_ROM_QSTR (MP_QSTR_MORPH_CROSS ), MP_ROM_INT (1 ) },
51
+ { MP_ROM_QSTR (MP_QSTR_MORPH_ELLIPSE ), MP_ROM_INT (2 ) },
52
+
53
+ // Color conversion codes, from opencv2/imgproc.hpp
54
+ { MP_ROM_QSTR (MP_QSTR_COLOR_BGR2BGRA ), MP_ROM_INT (0 ) },
55
+ { MP_ROM_QSTR (MP_QSTR_COLOR_RGB2RGBA ), MP_ROM_INT (0 ) },
56
+ { MP_ROM_QSTR (MP_QSTR_COLOR_BGRA2BGR ), MP_ROM_INT (1 ) },
57
+ { MP_ROM_QSTR (MP_QSTR_COLOR_RGBA2RGB ), MP_ROM_INT (1 ) },
58
+ { MP_ROM_QSTR (MP_QSTR_COLOR_BGR2RGBA ), MP_ROM_INT (2 ) },
59
+ { MP_ROM_QSTR (MP_QSTR_COLOR_RGB2BGRA ), MP_ROM_INT (2 ) },
60
+ { MP_ROM_QSTR (MP_QSTR_COLOR_RGBA2BGR ), MP_ROM_INT (3 ) },
61
+ { MP_ROM_QSTR (MP_QSTR_COLOR_BGRA2RGB ), MP_ROM_INT (3 ) },
62
+ { MP_ROM_QSTR (MP_QSTR_COLOR_BGR2RGB ), MP_ROM_INT (4 ) },
63
+ { MP_ROM_QSTR (MP_QSTR_COLOR_RGB2BGR ), MP_ROM_INT (4 ) },
64
+ { MP_ROM_QSTR (MP_QSTR_COLOR_BGRA2RGBA ), MP_ROM_INT (5 ) },
65
+ { MP_ROM_QSTR (MP_QSTR_COLOR_RGBA2BGRA ), MP_ROM_INT (5 ) },
43
66
{ MP_ROM_QSTR (MP_QSTR_COLOR_BGR2GRAY ), MP_ROM_INT (6 ) },
44
67
{ MP_ROM_QSTR (MP_QSTR_COLOR_RGB2GRAY ), MP_ROM_INT (7 ) },
45
68
{ MP_ROM_QSTR (MP_QSTR_COLOR_GRAY2BGR ), MP_ROM_INT (8 ) },
@@ -92,6 +115,10 @@ static const mp_rom_map_elem_t cv2_module_globals_table[] = {
92
115
////////////////////////////////////////////////////////////////////////////
93
116
94
117
{ MP_ROM_QSTR (MP_QSTR_cvtColor ), MP_ROM_PTR (& cv2_imgproc_cvtColor_obj ) },
118
+ { MP_ROM_QSTR (MP_QSTR_dilate ), MP_ROM_PTR (& cv2_imgproc_dilate_obj ) },
119
+ { MP_ROM_QSTR (MP_QSTR_erode ), MP_ROM_PTR (& cv2_imgproc_erode_obj ) },
120
+ { MP_ROM_QSTR (MP_QSTR_getStructuringElement ), MP_ROM_PTR (& cv2_imgproc_getStructuringElement_obj ) },
121
+ { MP_ROM_QSTR (MP_QSTR_morphologyEx ), MP_ROM_PTR (& cv2_imgproc_morphologyEx_obj ) },
95
122
};
96
123
static MP_DEFINE_CONST_DICT (cv2_module_globals , cv2_module_globals_table ) ;
97
124
0 commit comments