diff --git a/modules/python/src2/gen2.py b/modules/python/src2/gen2.py index 3249c57f82..af187e5d3f 100755 --- a/modules/python/src2/gen2.py +++ b/modules/python/src2/gen2.py @@ -854,7 +854,22 @@ class FuncInfo(object): all_code_variants = [] + # See https://github.com/opencv/opencv/issues/25928 + # Conversion to UMat is expensive more than conversion to Mat. + # To reduce this cost, conversion to Mat is prefer than to UMat. + variants = [] + variants_umat = [] for v in self.variants: + hasUMat = False + for a in v.args: + hasUMat = hasUMat or "UMat" in a.tp + if hasUMat : + variants_umat.append(v) + else: + variants.append(v) + variants.extend(variants_umat) + + for v in variants: code_decl = "" code_ret = "" code_cvt_list = []