js: Add findHomography js bindings.
authorCameron Martin <cameronmartin123@gmail.com>
Thu, 11 Apr 2019 23:13:12 +0000 (00:13 +0100)
committerCameron Martin <cameronmartin123@gmail.com>
Fri, 21 Jun 2019 10:13:53 +0000 (13:13 +0300)
Removed constants from legacy C api and switched out header with shorter version.

Removed blank line that was failing CI.

modules/calib3d/CMakeLists.txt
modules/js/src/embindgen.py
modules/js/test/test_calib3d.js [new file with mode: 0644]
modules/js/test/tests.html
modules/js/test/tests.js
platforms/js/build_js.py

index cba3f81..a38fdf1 100644 (file)
@@ -3,4 +3,6 @@ set(debug_modules "")
 if(DEBUG_opencv_calib3d)
   list(APPEND debug_modules opencv_highgui)
 endif()
-ocv_define_module(calib3d opencv_imgproc opencv_features2d ${debug_modules} WRAP java python)
+ocv_define_module(calib3d opencv_imgproc opencv_features2d ${debug_modules}
+    WRAP java python js
+)
index 9319e5f..d3ddb13 100644 (file)
@@ -142,6 +142,8 @@ features2d = {'Feature2D': ['detect', 'compute', 'detectAndCompute', 'descriptor
               'BFMatcher': ['isMaskSupported', 'create'],
               '': ['drawKeypoints', 'drawMatches']}
 
+calib3d = {'': ['findHomography']}
+
 def makeWhiteList(module_list):
     wl = {}
     for m in module_list:
@@ -152,7 +154,7 @@ def makeWhiteList(module_list):
                 wl[k] = m[k]
     return wl
 
-white_list = makeWhiteList([core, imgproc, objdetect, video, dnn, features2d])
+white_list = makeWhiteList([core, imgproc, objdetect, video, dnn, features2d, calib3d])
 
 # Features to be exported
 export_enums = False
diff --git a/modules/js/test/test_calib3d.js b/modules/js/test/test_calib3d.js
new file mode 100644 (file)
index 0000000..1c8e610
--- /dev/null
@@ -0,0 +1,43 @@
+// This file is part of OpenCV project.
+// It is subject to the license terms in the LICENSE file found in the top-level directory
+// of this distribution and at http://opencv.org/license.html.
+
+if (typeof module !== 'undefined' && module.exports) {
+  // The envrionment is Node.js
+  var cv = require('./opencv.js'); // eslint-disable-line no-var
+}
+
+QUnit.module('Camera Calibration and 3D Reconstruction', {});
+
+QUnit.test('constants', function(assert) {
+  assert.strictEqual(typeof cv.LMEDS, 'number');
+  assert.strictEqual(typeof cv.RANSAC, 'number');
+  assert.strictEqual(typeof cv.RHO, 'number');
+});
+
+QUnit.test('findHomography', function(assert) {
+  let srcPoints = cv.matFromArray(4, 1, cv.CV_32FC2, [
+    56,
+    65,
+    368,
+    52,
+    28,
+    387,
+    389,
+    390,
+  ]);
+  let dstPoints = cv.matFromArray(4, 1, cv.CV_32FC2, [
+    0,
+    0,
+    300,
+    0,
+    0,
+    300,
+    300,
+    300,
+  ]);
+
+  const mat = cv.findHomography(srcPoints, dstPoints);
+
+  assert.ok(mat instanceof cv.Mat);
+});
index c476dbb..f2f6ad6 100644 (file)
@@ -29,6 +29,7 @@
         <script type="application/javascript" src="test_objdetect.js"></script>
         <script type="application/javascript" src="test_video.js"></script>
         <script type="application/javascript" src="test_features2d.js"></script>
+        <script type="application/javascript" src="test_calib3d.js"></script>
         <script  type='text/javascript'>
             QUnit.config.autostart = false;
 
index a0adf96..1f9166d 100644 (file)
@@ -45,7 +45,9 @@ testrunner.run(
     {
         code: 'opencv.js',
         tests: ['test_mat.js', 'test_utils.js', 'test_imgproc.js',
-                'test_objdetect.js', 'test_video.js', 'test_features2d.js'],
+                'test_objdetect.js', 'test_video.js', 'test_features2d.js',
+                'test_calib3d.js'
+        ],
     },
     function(err, report) {
         console.log(report.failed + ' failed, ' + report.passed + ' passed');
index 883cac2..0237232 100644 (file)
@@ -115,7 +115,7 @@ class Builder:
                "-DWITH_QUIRC=OFF",
                "-DBUILD_ZLIB=ON",
                "-DBUILD_opencv_apps=OFF",
-               "-DBUILD_opencv_calib3d=ON",  # No bindings provided. This module is used as a dependency for other modules.
+               "-DBUILD_opencv_calib3d=ON",
                "-DBUILD_opencv_dnn=ON",
                "-DBUILD_opencv_features2d=ON",
                "-DBUILD_opencv_flann=OFF",