UNPKG

@anpanman/opencv_ts

Version:

Experimental WIP TypeScript typings and OpenCV.js/wasm loader.

165 lines (144 loc) 6.66 kB
// ////////////////////////////////////////////////////////////////////////////////////// // // 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: Sajjad Taheri, University of California, Irvine. sajjadt[at]uci[dot]edu // // LICENSE AGREEMENT // Copyright (c) 2015 The Regents of the University of California (Regents) // // Redistribution and use in source and binary forms, with or without // modification, are permitted provided that the following conditions are met: // 1. Redistributions of source code must retain the above copyright // notice, this list of conditions and the following disclaimer. // 2. Redistributions 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. // 3. Neither the name of the University nor the // names of its contributors may 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 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. // import cv from '../../' QUnit.module('Object Detection', { before: cv.loadOpenCV }) QUnit.test('groupRectangles', function (assert) { const rectList = new cv.RectVector() const weights = new cv.IntVector() const groupThreshold = 1 const eps = 0.2 const rect1 = new cv.Rect(1, 2, 3, 4) const rect2 = new cv.Rect(1, 4, 2, 3) rectList.push_back(rect1) rectList.push_back(rect2) cv.groupRectangles(rectList, weights, groupThreshold, eps) assert.false(false, 'TODO') rectList.delete() weights.delete() }) QUnit.test('CascadeClassifier', (assert) => { const classifier = new cv.CascadeClassifier() const modelPath = (typeof process !== 'undefined') ? (require('path').join(__dirname, 'haarcascade_frontalface_default.xml')) : '/haarcascade_frontalface_default.xml' // TODO: I can't get it to load... maybe Windows path issue? assert.true(true, 'TODO') return assert.true(classifier.load(modelPath)) const image = cv.Mat.eye({ height: 10, width: 10 }, cv.CV_8UC3) const objects = new cv.RectVector() const numDetections = new cv.IntVector() const scaleFactor = 1.1 const minNeighbors = 3 const flags = 0 const minSize = { height: 0, width: 0 } const maxSize = { height: 10, width: 10 } assert.strictEqual(classifier.empty(), true) try { classifier.detectMultiScale2(image, objects, numDetections, scaleFactor, minNeighbors, flags, minSize, maxSize) } catch (e) { console.log('e', e) console.log('ex', cv.exceptionFromPtr(e)) } // test default parameters classifier.detectMultiScale2(image, objects, numDetections, scaleFactor, minNeighbors, flags, minSize) classifier.detectMultiScale2(image, objects, numDetections, scaleFactor, minNeighbors, flags) classifier.detectMultiScale2(image, objects, numDetections, scaleFactor, minNeighbors) classifier.detectMultiScale2(image, objects, numDetections, scaleFactor) classifier.delete() objects.delete() numDetections.delete() }) QUnit.test('HOGDescriptor', (assert) => { const hog = new cv.HOGDescriptor() const mat = new cv.Mat({ height: 10, width: 10 }, cv.CV_8UC1) const descriptors = new cv.FloatVector() const locations = new cv.PointVector() assert.strictEqual(hog.winSize.height, 128) assert.strictEqual(hog.winSize.width, 64) assert.strictEqual(hog.nbins, 9) assert.strictEqual(hog.derivAperture, 1) assert.strictEqual(hog.winSigma, -1) assert.strictEqual(hog.histogramNormType, 0) assert.strictEqual(hog.nlevels, 64) // TODO: why is this ok when nlevels is normally a readonly property? // TODO: nlevels has to be explicitly handled in the tsgen hog.nlevels = 32 assert.strictEqual(hog.nlevels, 32) hog.delete() mat.delete() descriptors.delete() locations.delete() })