mirror of
https://github.com/serratus/quaggaJS.git
synced 2026-08-12 21:21:42 +08:00
Updated test-runner; Added integration-tests for EAN; Fixed error-measure for EAN
This commit is contained in:
Vendored
+8
-6
@@ -463,7 +463,7 @@ define(
|
||||
error = 0,
|
||||
singleError = 0,
|
||||
modulo = this.MODULO,
|
||||
maxSingleError = 0.9;
|
||||
maxSingleError = this.SINGLE_CODE_ERROR || 0.9;
|
||||
|
||||
for (i = 0; i < counter.length; i++) {
|
||||
singleError = Math.abs(code[i] - counter[i]);
|
||||
@@ -1121,7 +1121,9 @@ define(
|
||||
[3, 1, 2, 1],
|
||||
[2, 1, 1, 3]
|
||||
]},
|
||||
CODE_FREQUENCY : {value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]}
|
||||
CODE_FREQUENCY : {value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]},
|
||||
SINGLE_CODE_ERROR: {value: 1},
|
||||
AVG_CODE_ERROR: {value: 0.5}
|
||||
};
|
||||
|
||||
EANReader.prototype = Object.create(BarcodeReader.prototype, properties);
|
||||
@@ -1162,7 +1164,7 @@ define(
|
||||
}
|
||||
}
|
||||
bestMatch.end = i;
|
||||
if (bestMatch.error > 0.5) {
|
||||
if (bestMatch.error > self.AVG_CODE_ERROR) {
|
||||
return null;
|
||||
}
|
||||
return bestMatch;
|
||||
@@ -1205,7 +1207,7 @@ define(
|
||||
}
|
||||
|
||||
if ( epsilon === undefined) {
|
||||
epsilon = 0.5;
|
||||
epsilon = self.AVG_CODE_ERROR;
|
||||
}
|
||||
|
||||
for ( i = 0; i < pattern.length; i++) {
|
||||
@@ -6604,9 +6606,9 @@ define('bresenham',["cv_utils", "image_wrapper"], function(CVUtils, ImageWrapper
|
||||
// iterate over extrema and convert to binary based on avg between minmax
|
||||
for ( i = 1; i < extrema.length - 1; i++) {
|
||||
if (extrema[i + 1].val > extrema[i].val) {
|
||||
threshold = (extrema[i].val + (extrema[i + 1].val - extrema[i].val) / 2) | 0;
|
||||
threshold = (extrema[i].val + ((extrema[i + 1].val - extrema[i].val) / 3) * 2) | 0;
|
||||
} else {
|
||||
threshold = (extrema[i + 1].val + (extrema[i].val - extrema[i + 1].val) / 2) | 0;
|
||||
threshold = (extrema[i + 1].val + ((extrema[i].val - extrema[i + 1].val) / 3)) | 0;
|
||||
}
|
||||
|
||||
for ( j = extrema[i].pos; j < extrema[i + 1].pos; j++) {
|
||||
|
||||
+13
-1
@@ -6,20 +6,32 @@ module.exports = function(config) {
|
||||
'test-main.js',
|
||||
'src/vendor/glMatrix.js',
|
||||
'src/typedefs.js',
|
||||
{pattern: 'node_modules/async/lib/async.js', included: false},
|
||||
{pattern: 'src/*.js', included: false},
|
||||
{pattern: 'spec/**/*.js', included: false},
|
||||
{pattern: 'test/**/*.*', included: false}
|
||||
],
|
||||
exclude: [
|
||||
],
|
||||
preprocessors: {
|
||||
'src/*.js': ['coverage']
|
||||
},
|
||||
plugins: [
|
||||
'karma-chrome-launcher',
|
||||
'karma-coverage',
|
||||
'karma-mocha',
|
||||
'karma-requirejs',
|
||||
'karma-chai',
|
||||
'karma-sinon',
|
||||
'karma-sinon-chai',
|
||||
'karma-phantomjs-launcher'
|
||||
],
|
||||
reporters: ['progress', 'coverage'],
|
||||
port: 9876,
|
||||
colors: true,
|
||||
logLevel: config.LOG_INFO,
|
||||
autoWatch: true,
|
||||
browsers: ['PhantomJS'],
|
||||
browsers: ['Chrome'],
|
||||
singleRun: false,
|
||||
coverageReporter: {
|
||||
type : 'html',
|
||||
|
||||
+3
-1
@@ -4,6 +4,7 @@
|
||||
"description": "An advanced barcode-scanner written in JavaScript",
|
||||
"main": "dist/quagga.js",
|
||||
"devDependencies": {
|
||||
"async": "^0.9.0",
|
||||
"grunt": "~0.4.5",
|
||||
"grunt-contrib-jshint": "~0.10.0",
|
||||
"grunt-contrib-nodeunit": "~0.4.1",
|
||||
@@ -12,7 +13,8 @@
|
||||
"grunt-requirejs": "^0.4.2",
|
||||
"karma": "latest",
|
||||
"karma-chai": "latest",
|
||||
"karma-coverage": "^0.2.7",
|
||||
"karma-chrome-launcher": "^0.1.12",
|
||||
"karma-coverage": "^0.3.1",
|
||||
"karma-mocha": "latest",
|
||||
"karma-phantomjs-launcher": "^0.1.4",
|
||||
"karma-requirejs": "^0.2.2",
|
||||
|
||||
@@ -31,6 +31,9 @@ define(['camera_access'], function(CameraAccess){
|
||||
src: null,
|
||||
addEventListener: function() {
|
||||
|
||||
},
|
||||
removeEventListener: function() {
|
||||
|
||||
},
|
||||
play: function() {
|
||||
|
||||
|
||||
@@ -0,0 +1,82 @@
|
||||
|
||||
|
||||
define(['quagga', 'async'], function(Quagga, async) {
|
||||
describe('decodeSingle', function () {
|
||||
var config;
|
||||
|
||||
this.timeout(10000);
|
||||
|
||||
beforeEach(function () {
|
||||
config = {
|
||||
inputStream: {
|
||||
size: 640
|
||||
},
|
||||
locator: {
|
||||
patchSize: "medium",
|
||||
halfSample: true
|
||||
},
|
||||
numOfWorkers: 0,
|
||||
decoder: {
|
||||
readers: ["ean_reader"]
|
||||
},
|
||||
locate: true,
|
||||
src: null
|
||||
};
|
||||
});
|
||||
|
||||
var folder = "base/test/fixtures/ean/",
|
||||
testSet = [{
|
||||
"name": "image-001.jpg",
|
||||
"result": "3574660239843"
|
||||
},
|
||||
{
|
||||
"name": "image-002.jpg",
|
||||
"result": "8032754490297"
|
||||
},
|
||||
{
|
||||
"name": "image-003.jpg",
|
||||
"result": "4006209700068"
|
||||
},
|
||||
{
|
||||
"name": "image-004.jpg",
|
||||
"result": "9002233139084"
|
||||
},
|
||||
{
|
||||
"name": "image-005.jpg",
|
||||
"result": "8004030044005"
|
||||
},
|
||||
{
|
||||
"name": "image-006.jpg",
|
||||
"result": "4003626011159"
|
||||
},
|
||||
{
|
||||
"name": "image-007.jpg",
|
||||
"result": "2111220009686"
|
||||
},
|
||||
{
|
||||
"name": "image-008.jpg",
|
||||
"result": "9000275609022"
|
||||
},
|
||||
{
|
||||
"name": "image-009.jpg",
|
||||
"result": "9004593978587"
|
||||
},
|
||||
{
|
||||
"name": "image-010.jpg",
|
||||
"result": "9002244845578"
|
||||
}
|
||||
];
|
||||
|
||||
async.each(testSet, function (sample, callback) {
|
||||
it('should decode ' + sample.name + " correctly", function(done) {
|
||||
config.src = folder + sample.name;
|
||||
Quagga.decodeSingle(config, function (result) {});
|
||||
Quagga.onProcessed(function(result) {
|
||||
expect(result.codeResult.code).to.equal(sample.result);
|
||||
done();
|
||||
callback();
|
||||
});
|
||||
});
|
||||
}, function() {});
|
||||
});
|
||||
});
|
||||
@@ -29,7 +29,7 @@ define(
|
||||
error = 0,
|
||||
singleError = 0,
|
||||
modulo = this.MODULO,
|
||||
maxSingleError = 0.9;
|
||||
maxSingleError = this.SINGLE_CODE_ERROR || 0.9;
|
||||
|
||||
for (i = 0; i < counter.length; i++) {
|
||||
singleError = Math.abs(code[i] - counter[i]);
|
||||
|
||||
+2
-2
@@ -162,9 +162,9 @@ define(["cv_utils", "image_wrapper"], function(CVUtils, ImageWrapper) {
|
||||
// iterate over extrema and convert to binary based on avg between minmax
|
||||
for ( i = 1; i < extrema.length - 1; i++) {
|
||||
if (extrema[i + 1].val > extrema[i].val) {
|
||||
threshold = (extrema[i].val + (extrema[i + 1].val - extrema[i].val) / 2) | 0;
|
||||
threshold = (extrema[i].val + ((extrema[i + 1].val - extrema[i].val) / 3) * 2) | 0;
|
||||
} else {
|
||||
threshold = (extrema[i + 1].val + (extrema[i].val - extrema[i + 1].val) / 2) | 0;
|
||||
threshold = (extrema[i + 1].val + ((extrema[i].val - extrema[i + 1].val) / 3)) | 0;
|
||||
}
|
||||
|
||||
for ( j = extrema[i].pos; j < extrema[i + 1].pos; j++) {
|
||||
|
||||
+5
-3
@@ -41,7 +41,9 @@ define(
|
||||
[3, 1, 2, 1],
|
||||
[2, 1, 1, 3]
|
||||
]},
|
||||
CODE_FREQUENCY : {value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]}
|
||||
CODE_FREQUENCY : {value: [0, 11, 13, 14, 19, 25, 28, 21, 22, 26]},
|
||||
SINGLE_CODE_ERROR: {value: 1},
|
||||
AVG_CODE_ERROR: {value: 0.5}
|
||||
};
|
||||
|
||||
EANReader.prototype = Object.create(BarcodeReader.prototype, properties);
|
||||
@@ -82,7 +84,7 @@ define(
|
||||
}
|
||||
}
|
||||
bestMatch.end = i;
|
||||
if (bestMatch.error > 0.5) {
|
||||
if (bestMatch.error > self.AVG_CODE_ERROR) {
|
||||
return null;
|
||||
}
|
||||
return bestMatch;
|
||||
@@ -125,7 +127,7 @@ define(
|
||||
}
|
||||
|
||||
if ( epsilon === undefined) {
|
||||
epsilon = 0.5;
|
||||
epsilon = self.AVG_CODE_ERROR;
|
||||
}
|
||||
|
||||
for ( i = 0; i < pattern.length; i++) {
|
||||
|
||||
+25
-1
@@ -22,7 +22,31 @@ require.config({
|
||||
'cluster': 'src/cluster',
|
||||
'camera_access': 'src/camera_access',
|
||||
'events': 'src/events',
|
||||
'html_utils': 'src/html_utils'
|
||||
'html_utils': 'src/html_utils',
|
||||
'quagga': 'src/quagga',
|
||||
'barcode_decoder': 'src/barcode_decoder',
|
||||
'barcode_locator': 'src/barcode_locator',
|
||||
'barcode_reader': 'src/barcode_reader',
|
||||
'bresenham': 'src/bresenham',
|
||||
'codabar_reader': 'src/codabar_reader',
|
||||
'code_39_reader': 'src/code_39_reader',
|
||||
'code_39_vin_reader': 'src/code_39_vin_reader',
|
||||
'code_128_reader': 'src/code_128_reader',
|
||||
'config': 'src/config',
|
||||
'ean_8_reader': 'src/ean_8_reader',
|
||||
'ean_reader': 'src/ean_reader',
|
||||
'frame_grabber': 'src/frame_grabber',
|
||||
'image_debug': 'src/image_debug',
|
||||
'image_loader': 'src/image_loader',
|
||||
'image_wrapper': 'src/image_wrapper',
|
||||
'input_stream': 'src/input_stream',
|
||||
'rasterizer': 'src/rasterizer',
|
||||
'skeletonizer': 'src/skeletonizer',
|
||||
'subImage': 'src/subImage',
|
||||
'tracer': 'src/tracer',
|
||||
'upc_e_reader': 'src/upc_e_reader',
|
||||
'upc_reader': 'src/upc_reader',
|
||||
'async': 'node_modules/async/lib/async'
|
||||
},
|
||||
deps: allTestFiles,
|
||||
callback: window.__karma__.start
|
||||
|
||||
Reference in New Issue
Block a user