diff --git a/modules/js/generator/embindgen.py b/modules/js/generator/embindgen.py index 00d2406046..25cb90cfb9 100644 --- a/modules/js/generator/embindgen.py +++ b/modules/js/generator/embindgen.py @@ -248,16 +248,17 @@ class ArgInfo(object): self.const = True elif m == "/Ref": self.reference = True - if self.tp == "Mat": - if self.outputarg: - self.tp = "cv::Mat&" - elif self.inputarg: - self.tp = "const cv::Mat&" - if self.tp == "vector_Mat": - if self.outputarg: - self.tp = "std::vector&" - elif self.inputarg: - self.tp = "const std::vector&" + if self.tp == "Mat" and (self.inputarg or self.outputarg): + self.tp = "cv::Mat&" + if self.inputarg and not self.outputarg: + self.const = True + if self.tp == "vector_Mat" and (self.inputarg or self.outputarg): + self.tp = "std::vector&" + if self.reference and not self.const: + self.inputarg = False + self.outputarg = True + elif self.inputarg and not self.outputarg: + self.const = True self.tp = handle_vector(self.tp).strip() if self.const: self.tp = "const " + self.tp