@@ -1154,16 +1154,36 @@ jsi::Object FOCV_Function::invoke(jsi::Runtime& runtime, const jsi::Value* argum
11541154 cv::matchTemplate (*image, *templ, *result, method, *mask);
11551155 } break ;
11561156 case hashString (" approxPolyDP" , 12 ): {
1157- auto approxCurve = args.asMatPtr (2 );
11581157 auto epsilon = args.asNumber (3 );
11591158 auto closed = args.asBool (4 );
1160-
1159+
11611160 if (args.isMat (1 )) {
1162- auto curve = args.asMatPtr (1 );
1163- cv::approxPolyDP (*curve, *approxCurve, epsilon, closed);
1161+ auto curve = args.asMatPtr (1 );
1162+ if (args.isMat (2 )) {
1163+ auto approxCurve = args.asMatPtr (2 );
1164+ cv::approxPolyDP (*curve, *approxCurve, epsilon, closed);
1165+ } else {
1166+ auto approxCurve = args.asPointVectorPtr (2 );
1167+ cv::approxPolyDP (*curve, *approxCurve, epsilon, closed);
1168+ }
1169+ } else if (args.isMatVector (1 )) {
1170+ auto curve = args.asMatVectorPtr (1 );
1171+ if (args.isMat (2 )) {
1172+ auto approxCurve = args.asMatPtr (2 );
1173+ cv::approxPolyDP (*curve, *approxCurve, epsilon, closed);
1174+ } else {
1175+ auto approxCurve = args.asPointVectorPtr (2 );
1176+ cv::approxPolyDP (*curve, *approxCurve, epsilon, closed);
1177+ }
11641178 } else {
1165- auto curve = args.asMatVectorPtr (1 );
1166- cv::approxPolyDP (*curve, *approxCurve, epsilon, closed);
1179+ auto curve = args.asPointVectorPtr (1 );
1180+ if (args.isMat (2 )) {
1181+ auto approxCurve = args.asMatPtr (2 );
1182+ cv::approxPolyDP (*curve, *approxCurve, epsilon, closed);
1183+ } else {
1184+ auto approxCurve = args.asPointVectorPtr (2 );
1185+ cv::approxPolyDP (*curve, *approxCurve, epsilon, closed);
1186+ }
11671187 }
11681188 } break ;
11691189 case hashString (" arcLength" , 9 ): {
@@ -1173,10 +1193,14 @@ jsi::Object FOCV_Function::invoke(jsi::Runtime& runtime, const jsi::Value* argum
11731193 auto curve = args.asMatPtr (1 );
11741194 auto result = cv::arcLength (*curve, closed);
11751195 value.setProperty (runtime, " value" , jsi::Value (result));
1196+ } else if (args.isMatVector (1 )) {
1197+ auto curve = args.asMatVectorPtr (1 );
1198+ auto result = cv::arcLength (*curve, closed);
1199+ value.setProperty (runtime, " value" , jsi::Value (result));
11761200 } else {
1177- auto curve = args.asMatVectorPtr (1 );
1178- auto result = cv::arcLength (*curve, closed);
1179- value.setProperty (runtime, " value" , jsi::Value (result));
1201+ auto curve = args.asPointVectorPtr (1 );
1202+ auto result = cv::arcLength (*curve, closed);
1203+ value.setProperty (runtime, " value" , jsi::Value (result));
11801204 }
11811205 } break ;
11821206 case hashString (" boundingRect" , 12 ): {
@@ -1292,4 +1316,4 @@ jsi::Object FOCV_Function::invoke(jsi::Runtime& runtime, const jsi::Value* argum
12921316 }
12931317
12941318 return value;
1295- }
1319+ }
0 commit comments