From c2bc171ef6175fa34af87398805cf9f87deb5d7e Mon Sep 17 00:00:00 2001 From: Steffen Urban Date: Fri, 18 Dec 2020 13:01:48 +0100 Subject: [PATCH] js: backport PR18985 original commit: b82700ae4104a527534e66d3eb91f9835bc7957b --- doc/js_tutorials/js_setup/js_setup/js_setup.markdown | 7 +++++++ modules/js/generator/embindgen.py | 6 ++++-- platforms/js/opencv_js.config.py | 6 ++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/doc/js_tutorials/js_setup/js_setup/js_setup.markdown b/doc/js_tutorials/js_setup/js_setup/js_setup.markdown index 435f06fe02..55fd40fb7e 100644 --- a/doc/js_tutorials/js_setup/js_setup/js_setup.markdown +++ b/doc/js_tutorials/js_setup/js_setup/js_setup.markdown @@ -127,6 +127,13 @@ Building OpenCV.js from Source python ./platforms/js/build_js.py build_js --build_test @endcode +-# [optional] To enable OpenCV contrib modules append `--cmake_option="-DOPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib/modules/"` + + For example: + @code{.bash} + python ./platforms/js/build_js.py build_js --cmake_option="-DOPENCV_EXTRA_MODULES_PATH=opencv_contrib/modules" + @endcode + Running OpenCV.js Tests --------------------------------------- diff --git a/modules/js/generator/embindgen.py b/modules/js/generator/embindgen.py index 6e2bac71a1..7eddb11ba2 100644 --- a/modules/js/generator/embindgen.py +++ b/modules/js/generator/embindgen.py @@ -634,8 +634,10 @@ class JSWrapperGenerator(object): ret_type = type_dict[ptr_type] for key in type_dict: if key in ret_type: - ret_type = ret_type.replace(key, type_dict[key]) - + # Replace types. Instead of ret_type.replace we use regular + # expression to exclude false matches. + # See https://github.com/opencv/opencv/issues/15514 + ret_type = re.sub('(^|[^\w])' + key + '($|[^\w])', type_dict[key], ret_type) if variant.constret and ret_type.startswith('const') == False: ret_type = 'const ' + ret_type if variant.refret and ret_type.endswith('&') == False: diff --git a/platforms/js/opencv_js.config.py b/platforms/js/opencv_js.config.py index bcbdcfdf96..749624be88 100644 --- a/platforms/js/opencv_js.config.py +++ b/platforms/js/opencv_js.config.py @@ -47,6 +47,8 @@ features2d = {'Feature2D': ['detect', 'compute', 'detectAndCompute', 'descriptor 'BFMatcher': ['isMaskSupported', 'create'], '': ['drawKeypoints', 'drawMatches', 'drawMatchesKnn']} -calib3d = {'': ['findHomography', 'estimateAffine2D', 'Rodrigues']} +calib3d = {'': ['findHomography', 'calibrateCameraExtended', 'drawFrameAxes', 'estimateAffine2D', \ + 'getDefaultNewCameraMatrix', 'initUndistortRectifyMap', 'Rodrigues', \ + 'solvePnP', 'solvePnPRansac', 'solvePnPRefineLM']} -white_list = makeWhiteList([core, imgproc, objdetect, video, dnn, features2d, calib3d]) \ No newline at end of file +white_list = makeWhiteList([core, imgproc, objdetect, video, dnn, features2d, calib3d])