diff --git a/modules/js/src/embindgen.py b/modules/js/src/embindgen.py
index 7ba9b6038f..3a7a977774 100644
--- a/modules/js/src/embindgen.py
+++ b/modules/js/src/embindgen.py
@@ -142,6 +142,27 @@ features2d = {'Feature2D': ['detect', 'compute', 'detectAndCompute', 'descriptor
'BFMatcher': ['isMaskSupported', 'create'],
'': ['FAST', 'AGAST', 'drawKeypoints', 'drawMatches']}
+photo = {'': ['createAlignMTB', 'createCalibrateDebevec', 'createCalibrateRobertson', \
+ 'createMergeDebevec', 'createMergeMertens', 'createMergeRobertson', \
+ 'createTonemapDrago', 'createTonemapMantiuk', 'createTonemapReinhard'],
+ 'CalibrateCRF': ['process'],
+ 'AlignMTB' : ['calculateShift', 'shiftMat', 'computeBitmaps', 'getMaxBits', 'setMaxBits', \
+ 'getExcludeRange', 'setExcludeRange', 'getCut', 'setCut'],
+ 'CalibrateDebevec' : ['getLambda', 'setLambda', 'getSamples', 'setSamples', 'getRandom', 'setRandom'],
+ 'CalibrateRobertson' : ['getMaxIter', 'setMaxIter', 'getThreshold', 'setThreshold', 'getRadiance'],
+ 'MergeExposures' : ['process'],
+ 'MergeDebevec' : ['process'],
+ 'MergeMertens' : ['process', 'getContrastWeight', 'setContrastWeight', 'getSaturationWeight', \
+ 'setSaturationWeight', 'getExposureWeight', 'setExposureWeight'],
+ 'MergeRobertson' : ['process'],
+ 'Tonemap' : ['process' , 'getGamma', 'setGamma'],
+ 'TonemapDrago' : ['getSaturation', 'setSaturation', 'getBias', 'setBias', \
+ 'getSigmaColor', 'setSigmaColor', 'getSigmaSpace','setSigmaSpace'],
+ 'TonemapMantiuk' : ['getScale', 'setScale', 'getSaturation', 'setSaturation'],
+ 'TonemapReinhard' : ['getIntensity', 'setIntensity', 'getLightAdaptation', 'setLightAdaptation', \
+ 'getColorAdaptation', 'setColorAdaptation']
+ }
+
def makeWhiteList(module_list):
wl = {}
for m in module_list:
@@ -152,7 +173,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, photo])
# Features to be exported
export_enums = False
diff --git a/modules/js/test/test_photo.js b/modules/js/test/test_photo.js
new file mode 100644
index 0000000000..a2921e6669
--- /dev/null
+++ b/modules/js/test/test_photo.js
@@ -0,0 +1,106 @@
+// //////////////////////////////////////////////////////////////////////////////////////
+//
+// IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
+//
+// By downloading, copying, installing or using the software you agree to this license.
+// If you do not agree to this license, do not download, install,
+// copy or use the software.
+//
+//
+// License Agreement
+// For Open Source Computer Vision Library
+//
+// Copyright (C) 2013, OpenCV Foundation, all rights reserved.
+// Third party copyrights are property of their respective owners.
+//
+// Redistribution and use in source and binary forms, with or without modification,
+// are permitted provided that the following conditions are met:
+//
+// * Redistribution's of source code must retain the above copyright notice,
+// this list of conditions and the following disclaimer.
+//
+// * Redistribution's in binary form must reproduce the above copyright notice,
+// this list of conditions and the following disclaimer in the documentation
+// and/or other materials provided with the distribution.
+//
+// * The name of the copyright holders may not be used to endorse or promote products
+// derived from this software without specific prior written permission.
+//
+// This software is provided by the copyright holders and contributors "as is" and
+// any express or implied warranties, including, but not limited to, the implied
+// warranties of merchantability and fitness for a particular purpose are disclaimed.
+// In no event shall the Intel Corporation or contributors be liable for any direct,
+// indirect, incidental, special, exemplary, or consequential damages
+// (including, but not limited to, procurement of substitute goods or services;
+// loss of use, data, or profits; or business interruption) however caused
+// and on any theory of liability, whether in contract, strict liability,
+// or tort (including negligence or otherwise) arising in any way out of
+// the use of this software, even if advised of the possibility of such damage.
+//
+
+// Author : Rijubrata Bhaumik, Intel Corporation. rijubrata.bhaumik[at]intel[dot]com
+
+if (typeof module !== 'undefined' && module.exports) {
+ // The envrionment is Node.js
+ var cv = require('./opencv.js'); // eslint-disable-line no-var
+}
+
+
+QUnit.module('Photo', {});
+
+QUnit.test('test_photo', function(assert) {
+ // CalibrateDebevec
+ {
+ let calibration = new cv.CalibrateDebevec();
+ assert.ok(true, calibration);
+ //let response = calibration.process(images, exposures);
+ }
+ // CalibrateRobertson
+ {
+ let calibration = new cv.CalibrateRobertson();
+ assert.ok(true, calibration);
+ //let response = calibration.process(images, exposures);
+ }
+
+ // MergeDebevec
+ {
+ let merge = new cv.MergeDebevec();
+ assert.ok(true, merge);
+ //let hdr = merge.process(images, exposures, response);
+ }
+ // MergeMertens
+ {
+ let merge = new cv.MergeMertens();
+ assert.ok(true, merge);
+ //let hdr = merge.process(images, exposures, response);
+ }
+ // MergeRobertson
+ {
+ let merge = new cv.MergeRobertson();
+ assert.ok(true, merge);
+ //let hdr = merge.process(images, exposures, response);
+ }
+
+ // TonemapDrago
+ {
+ let tonemap = new cv.TonemapDrago();
+ assert.ok(true, tonemap);
+ // let ldr = new cv.Mat();
+ // let retval = tonemap.process(hdr, ldr);
+ }
+ // TonemapMantiuk
+ {
+ let tonemap = new cv.TonemapMantiuk();
+ assert.ok(true, tonemap);
+ // let ldr = new cv.Mat();
+ // let retval = tonemap.process(hdr, ldr);
+ }
+ // TonemapReinhard
+ {
+ let tonemap = new cv.TonemapReinhard();
+ assert.ok(true, tonemap);
+ // let ldr = new cv.Mat();
+ // let retval = tonemap.process(hdr, ldr);
+ }
+
+});
\ No newline at end of file
diff --git a/modules/js/test/tests.html b/modules/js/test/tests.html
index 2ed5325c5b..8f65ce7f66 100644
--- a/modules/js/test/tests.html
+++ b/modules/js/test/tests.html
@@ -28,6 +28,7 @@
+