@@ -34,35 +34,46 @@ jsi::Object FOCV_Function::invoke(jsi::Runtime& runtime, const jsi::Value* argum
34
34
35
35
switch (hashString (functionName.c_str (), functionName.size ())) {
36
36
case hashString (" cvtColor" , 8 ): {
37
- cv::Mat src = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
38
- cv::Mat dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
39
- cv::cvtColor (src, dst, arguments[3 ].getNumber ());
37
+ cv::InputArray src = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
38
+ cv::OutputArray dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
39
+ auto code = arguments[3 ].getNumber ();
40
+
41
+ if (arguments[4 ].isNumber ()) {
42
+ auto dsnCn = arguments[4 ].getNumber ();
43
+
44
+ cv::cvtColor (src, dst, code, dsnCn);
45
+ } else {
46
+ cv::cvtColor (src, dst, code);
47
+ }
48
+
40
49
FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]), dst);
41
50
} break ;
42
51
case hashString (" inRange" , 7 ): {
43
- cv::Mat src = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
44
- std::string s = FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]);
45
- std::string id = FOCV_JsiObject::type_from_wrap (runtime, arguments[2 ]);
46
- cv::Vec3b lowerBound = FOCV_Storage::get<cv::Vec3b>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
47
- cv::Vec3b upperBound = FOCV_Storage::get<cv::Vec3b>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
48
- cv::Mat dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[4 ]));
52
+ auto src = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
53
+ auto lowerBound = FOCV_Storage::get<cv::Vec3b>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
54
+ auto upperBound = FOCV_Storage::get<cv::Vec3b>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
55
+ auto dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[4 ]));
56
+
49
57
cv::inRange (src, lowerBound, upperBound, dst);
50
58
FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[4 ]), dst);
51
59
} break ;
52
60
case hashString (" split" , 5 ): {
53
- cv::Mat src = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
54
- std::vector<cv::Mat> dst = FOCV_Storage::get<std::vector<cv::Mat>>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
61
+ auto src = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
62
+ auto dst = FOCV_Storage::get<std::vector<cv::Mat>>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
63
+
55
64
cv::split (src, dst);
56
65
FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]), dst);
57
66
} break ;
58
67
case hashString (" findContours" , 12 ): {
59
- cv::Mat src = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
68
+ auto src = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
69
+ auto mode = arguments[2 ].getNumber ();
70
+ auto method = arguments[3 ].getNumber ();
71
+
60
72
std::vector<std::vector<cv::Point >> contours;
61
73
62
- cv::findContours (src, contours, arguments[ 2 ]. getNumber (), arguments[ 3 ]. getNumber () );
74
+ cv::findContours (src, contours, mode, method );
63
75
64
76
auto ids = FOCV_Ids ();
65
-
66
77
for (size_t i = 0 ; i < contours.size (); i++) {
67
78
auto id = FOCV_Storage::save (contours.at (i));
68
79
ids.push (id);
@@ -71,18 +82,163 @@ jsi::Object FOCV_Function::invoke(jsi::Runtime& runtime, const jsi::Value* argum
71
82
return ids.toJsiArray (runtime, " point_vector" );
72
83
} break ;
73
84
case hashString (" contourArea" , 11 ): {
74
- std::vector<cv::Point > src = FOCV_Storage::get<std::vector<cv::Point >>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
85
+ auto src = FOCV_Storage::get<std::vector<cv::Point >>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
86
+ auto oriented = arguments[2 ].getBool ();
75
87
76
- value.setProperty (runtime, " area " , contourArea (src, arguments[ 2 ]. getBool () ));
88
+ value.setProperty (runtime, " value " , contourArea (src, oriented ));
77
89
} break ;
78
90
case hashString (" boundingRect" , 12 ): {
79
- std::vector<cv::Point > src = FOCV_Storage::get<std::vector<cv::Point >>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
80
- cv::Rect rect = cv::boundingRect (src);
91
+ auto src = FOCV_Storage::get<std::vector<cv::Point >>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
81
92
93
+ cv::Rect rect = cv::boundingRect (src);
82
94
std::string id = FOCV_Storage::save (rect);
83
95
84
96
return FOCV_JsiObject::wrap (runtime, " rect" , id);
85
97
} break ;
98
+
99
+ case hashString (" absdiff" , 7 ): {
100
+ auto src1 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
101
+ auto src2 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
102
+ auto dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
103
+
104
+ cv::absdiff (src1, src2, dst);
105
+
106
+ FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]), dst);
107
+ } break ;
108
+ case hashString (" add" , 3 ): {
109
+ auto src1 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
110
+ auto src2 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
111
+ auto dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
112
+
113
+ if (arguments[5 ].isNumber ()) {
114
+ auto mask = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[4 ]));
115
+ auto dtype = arguments[5 ].asNumber ();
116
+
117
+ cv::add (src1, src2, dst, mask, dtype);
118
+ } else if (arguments[4 ].isObject ()) {
119
+ auto mask = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[4 ]));
120
+
121
+ cv::add (src1, src2, dst, mask);
122
+ } else {
123
+ cv::add (src1, src2, dst);
124
+ }
125
+
126
+ FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]), dst);
127
+ } break ;
128
+ case hashString (" addWeighted" , 11 ): {
129
+ auto src1 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
130
+ auto alpha = arguments[2 ].asNumber ();
131
+ auto src2 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
132
+ auto beta = arguments[4 ].asNumber ();
133
+ auto gamma = arguments[5 ].asNumber ();
134
+ auto dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[6 ]));
135
+
136
+ if (arguments[7 ].isNumber ()) {
137
+ auto dtype = arguments[7 ].asNumber ();
138
+
139
+ cv::addWeighted (src1, alpha, src2, beta, gamma , dst, dtype);
140
+ } else {
141
+ cv::addWeighted (src1, alpha, src2, beta, gamma , dst);
142
+ }
143
+
144
+ FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[6 ]), dst);
145
+ } break ;
146
+ case hashString (" batchDistance" , 13 ): {
147
+ auto src1 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
148
+ auto src2 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
149
+ auto dist = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
150
+ auto dtype = arguments[4 ].asNumber ();
151
+ auto nidx = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[5 ]));
152
+ auto normType = arguments[6 ].asNumber ();
153
+ auto K = arguments[7 ].asNumber ();
154
+ auto mask = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[8 ]));
155
+ auto update = arguments[9 ].asNumber ();
156
+ auto crosscheck = arguments[10 ].asNumber ();
157
+
158
+ cv::batchDistance (src1, src2, dist, dtype, nidx, normType, K, mask, update, crosscheck);
159
+
160
+ FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]), dist);
161
+ } break ;
162
+ case hashString (" bitwise_and" , 11 ): {
163
+ auto src1 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
164
+ auto src2 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
165
+ auto dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
166
+
167
+ if (arguments[4 ].isObject ()) {
168
+ auto mask = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[4 ]));
169
+
170
+ cv::bitwise_and (src1, src2, dst, mask);
171
+ } else {
172
+ cv::bitwise_and (src1, src2, dst);
173
+ }
174
+
175
+ FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]), dst);
176
+ } break ;
177
+ case hashString (" bitwise_not" , 11 ): {
178
+ auto src1 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
179
+ auto dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
180
+
181
+ if (arguments[3 ].isObject ()) {
182
+ auto mask = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
183
+
184
+ cv::bitwise_not (src1, dst, mask);
185
+ } else {
186
+ cv::bitwise_not (src1, dst);
187
+ }
188
+
189
+ FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]), dst);
190
+ } break ;
191
+ case hashString (" bitwise_or" , 10 ): {
192
+ auto src1 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
193
+ auto src2 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
194
+ auto dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
195
+
196
+ if (arguments[4 ].isObject ()) {
197
+ auto mask = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[4 ]));
198
+
199
+ cv::bitwise_or (src1, src2, dst, mask);
200
+ } else {
201
+ cv::bitwise_or (src1, src2, dst);
202
+ }
203
+
204
+ FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]), dst);
205
+ } break ;
206
+ case hashString (" bitwise_xor" , 11 ): {
207
+ auto src1 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
208
+ auto src2 = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[2 ]));
209
+ auto dst = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
210
+
211
+ if (arguments[4 ].isObject ()) {
212
+ auto mask = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[4 ]));
213
+
214
+ cv::bitwise_xor (src1, src2, dst, mask);
215
+ } else {
216
+ cv::bitwise_xor (src1, src2, dst);
217
+ }
218
+
219
+ FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]), dst);
220
+ } break ;
221
+ case hashString (" borderInterpolate" , 17 ): {
222
+ auto p = arguments[1 ].asNumber ();
223
+ auto len = arguments[2 ].asNumber ();
224
+ auto borderType = arguments[3 ].asNumber ();
225
+
226
+ auto result = cv::borderInterpolate (p, len, borderType);
227
+
228
+ value.setProperty (runtime, " value" , result);
229
+ } break ;
230
+ case hashString (" calcCovarMatrix" , 15 ): {
231
+ auto samples = FOCV_Storage::get<std::vector<cv::Mat>>(FOCV_JsiObject::id_from_wrap (runtime, arguments[1 ]));
232
+ auto nsamples = arguments[2 ].asNumber ();
233
+ auto covar = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]));
234
+ auto mean = FOCV_Storage::get<cv::Mat>(FOCV_JsiObject::id_from_wrap (runtime, arguments[4 ]));
235
+ auto flags = arguments[5 ].asNumber ();
236
+ auto dtype = arguments[6 ].asNumber ();
237
+
238
+ cv::calcCovarMatrix (samples.data (), nsamples, covar, mean, flags, dtype);
239
+
240
+ FOCV_Storage::save (FOCV_JsiObject::id_from_wrap (runtime, arguments[3 ]), covar);
241
+ } break ;
86
242
}
87
243
88
244
return value;
0 commit comments