mirror of
https://github.com/opencv/opencv.git
synced 2025-06-10 11:03:03 +08:00
Merge pull request #13300 from riju:photoModule
* Enable Javascript bindings for photo module. 1. Enable the build flag in build_js.py. 2. Append js into WRAP list of photo’s CMakefiles.txt 3. Add photo module's API into JS API whitelist (embindgen.py) Exposing the HDR imaging part of photo module. [TODO] Add tests Fix opencv/doc/js_tutorials/ * [WIP] TODO: Add tests * Remove TonemapDurand: algorithm patented in US, so moved to opencv_contrib * Fix ningxin's comment: expose the base class. * Add some more simple binding tests. Also expose process function
This commit is contained in:
parent
cab15f6c5e
commit
e70786e05e
@ -142,6 +142,27 @@ features2d = {'Feature2D': ['detect', 'compute', 'detectAndCompute', 'descriptor
|
|||||||
'BFMatcher': ['isMaskSupported', 'create'],
|
'BFMatcher': ['isMaskSupported', 'create'],
|
||||||
'': ['FAST', 'AGAST', 'drawKeypoints', 'drawMatches']}
|
'': ['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):
|
def makeWhiteList(module_list):
|
||||||
wl = {}
|
wl = {}
|
||||||
for m in module_list:
|
for m in module_list:
|
||||||
@ -152,7 +173,7 @@ def makeWhiteList(module_list):
|
|||||||
wl[k] = m[k]
|
wl[k] = m[k]
|
||||||
return wl
|
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
|
# Features to be exported
|
||||||
export_enums = False
|
export_enums = False
|
||||||
|
106
modules/js/test/test_photo.js
Normal file
106
modules/js/test/test_photo.js
Normal file
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
@ -28,6 +28,7 @@
|
|||||||
<script type="application/javascript" src="test_imgproc.js"></script>
|
<script type="application/javascript" src="test_imgproc.js"></script>
|
||||||
<script type="application/javascript" src="test_objdetect.js"></script>
|
<script type="application/javascript" src="test_objdetect.js"></script>
|
||||||
<script type="application/javascript" src="test_video.js"></script>
|
<script type="application/javascript" src="test_video.js"></script>
|
||||||
|
<script type="application/javascript" src="test_photo.js"></script>
|
||||||
<script type='text/javascript'>
|
<script type='text/javascript'>
|
||||||
QUnit.config.autostart = false;
|
QUnit.config.autostart = false;
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ testrunner.run(
|
|||||||
{
|
{
|
||||||
code: 'opencv.js',
|
code: 'opencv.js',
|
||||||
tests: ['test_mat.js', 'test_utils.js', 'test_imgproc.js',
|
tests: ['test_mat.js', 'test_utils.js', 'test_imgproc.js',
|
||||||
'test_objdetect.js', 'test_video.js'],
|
'test_objdetect.js', 'test_video.js', 'test_photo.js'],
|
||||||
},
|
},
|
||||||
function(err, report) {
|
function(err, report) {
|
||||||
console.log(report.failed + ' failed, ' + report.passed + ' passed');
|
console.log(report.failed + ' failed, ' + report.passed + ' passed');
|
||||||
|
@ -4,4 +4,4 @@ if(HAVE_CUDA)
|
|||||||
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations -Wshadow)
|
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations -Wshadow)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
ocv_define_module(photo opencv_imgproc OPTIONAL opencv_cudaarithm opencv_cudaimgproc WRAP java python)
|
ocv_define_module(photo opencv_imgproc OPTIONAL opencv_cudaarithm opencv_cudaimgproc WRAP java python js)
|
||||||
|
@ -121,7 +121,7 @@ class Builder:
|
|||||||
"-DBUILD_opencv_flann=ON", # No bindings provided. This module is used as a dependency for other modules.
|
"-DBUILD_opencv_flann=ON", # No bindings provided. This module is used as a dependency for other modules.
|
||||||
"-DBUILD_opencv_gapi=OFF",
|
"-DBUILD_opencv_gapi=OFF",
|
||||||
"-DBUILD_opencv_ml=OFF",
|
"-DBUILD_opencv_ml=OFF",
|
||||||
"-DBUILD_opencv_photo=OFF",
|
"-DBUILD_opencv_photo=ON",
|
||||||
"-DBUILD_opencv_imgcodecs=OFF",
|
"-DBUILD_opencv_imgcodecs=OFF",
|
||||||
"-DBUILD_opencv_shape=OFF",
|
"-DBUILD_opencv_shape=OFF",
|
||||||
"-DBUILD_opencv_videoio=OFF",
|
"-DBUILD_opencv_videoio=OFF",
|
||||||
|
Loading…
Reference in New Issue
Block a user