diff --git a/modules/js/src/core_bindings.cpp b/modules/js/src/core_bindings.cpp index ee980aacb2..6771c42edb 100644 --- a/modules/js/src/core_bindings.cpp +++ b/modules/js/src/core_bindings.cpp @@ -90,6 +90,8 @@ using namespace cv; using namespace cv::segmentation; // FIXIT using namespace cv::aruco; +typedef aruco::DetectorParameters aruco_DetectorParameters; +typedef QRCodeDetectorAruco::Params QRCodeDetectorAruco_Params; #ifdef HAVE_OPENCV_DNN using namespace cv::dnn; diff --git a/modules/js/test/test_objdetect.js b/modules/js/test/test_objdetect.js index 7c481eb10a..d4f6c5397b 100644 --- a/modules/js/test/test_objdetect.js +++ b/modules/js/test/test_objdetect.js @@ -200,6 +200,27 @@ QUnit.test('QR code detect and decode', function (assert) { } }); +QUnit.test('Aruco-based QR code detect', function (assert) { + { + let qrcode_params = new cv.QRCodeDetectorAruco_Params(); + let detector = new cv.QRCodeDetectorAruco(); + let mat = cv.Mat.ones(800, 600, cv.CV_8U); + assert.ok(mat); + + detector.setDetectorParameters(qrcode_params); + + let points = new cv.Mat(); + let qrCodeFound = detector.detect(mat, points); + assert.equal(points.rows, 0) + assert.equal(points.cols, 0) + assert.equal(qrCodeFound, false); + + qrcode_params.delete(); + detector.delete(); + points.delete(); + mat.delete(); + } +}); QUnit.test('Aruco detector', function (assert) { { let dictionary = cv.getPredefinedDictionary(cv.DICT_4X4_50); diff --git a/platforms/js/opencv_js.config.py b/platforms/js/opencv_js.config.py index 86a6984fd1..c926a62f5d 100644 --- a/platforms/js/opencv_js.config.py +++ b/platforms/js/opencv_js.config.py @@ -124,7 +124,9 @@ objdetect = {'': ['groupRectangles', 'getPredefinedDictionary', 'extendDictionar 'aruco_DetectorParameters': ['DetectorParameters'], 'aruco_RefineParameters': ['RefineParameters'], 'aruco_ArucoDetector': ['ArucoDetector', 'detectMarkers', 'refineDetectedMarkers', 'setDictionary', 'setDetectorParameters', 'setRefineParameters'], - 'aruco_CharucoDetector': ['CharucoDetector', 'setBoard', 'setCharucoParameters', 'setDetectorParameters', 'setRefineParameters', 'detectBoard', 'detectDiamonds'] + 'aruco_CharucoDetector': ['CharucoDetector', 'setBoard', 'setCharucoParameters', 'setDetectorParameters', 'setRefineParameters', 'detectBoard', 'detectDiamonds'], + 'QRCodeDetectorAruco_Params': ['Params'], + 'QRCodeDetectorAruco': ['QRCodeDetectorAruco', 'decode', 'detect', 'detectAndDecode', 'detectMulti', 'decodeMulti', 'detectAndDecodeMulti', 'setDetectorParameters', 'setArucoParameters'] } video = {