Skip to content

Commit ea2c13c

Browse files
committed
Improve cascade file loading and error handling for js tutorials
1 parent f57106b commit ea2c13c

File tree

3 files changed

+29
-20
lines changed

3 files changed

+29
-20
lines changed

doc/js_tutorials/js_assets/js_face_detection.html

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,18 +77,14 @@ <h2>Face Detection Example</h2>
7777
});
7878

7979
utils.loadOpenCv(() => {
80-
tryIt.removeAttribute('disabled');
80+
let eyeCascadeFile = 'haarcascade_eye.xml';
81+
utils.createFileFromUrl(eyeCascadeFile, eyeCascadeFile, () => {
82+
let faceCascadeFile = 'haarcascade_frontalface_default.xml';
83+
utils.createFileFromUrl(faceCascadeFile, faceCascadeFile, () => {
84+
tryIt.removeAttribute('disabled');
85+
});
86+
});
8187
});
82-
let Module = {
83-
preRun: [function() {
84-
Module.FS_createPreloadedFile('/', 'haarcascade_eye.xml',
85-
'haarcascade_eye.xml', true, false);
86-
let frontalfaceXML = 'haarcascade_frontalface_default.xml';
87-
let frontalfaceDefaultXML = 'haarcascade_frontalface_default.xml';
88-
Module.FS_createPreloadedFile('/', frontalfaceXML,
89-
frontalfaceDefaultXML, true, false);
90-
}],
91-
};
9288
</script>
9389
</body>
9490
</html>

doc/js_tutorials/js_assets/js_face_detection_camera.html

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -131,16 +131,11 @@ <h2>Face Detection Camera Example</h2>
131131
startAndStop.innerText = 'Start';
132132
}
133133

134-
let Module = {
135-
preRun: [function() {
136-
Module.FS_createPreloadedFile(
137-
'/', 'haarcascade_frontalface_default.xml',
138-
'haarcascade_frontalface_default.xml', true, false);
139-
}],
140-
};
141-
142134
utils.loadOpenCv(() => {
143-
startAndStop.removeAttribute('disabled');
135+
let faceCascadeFile = 'haarcascade_frontalface_default.xml';
136+
utils.createFileFromUrl(faceCascadeFile, faceCascadeFile, () => {
137+
startAndStop.removeAttribute('disabled');
138+
});
144139
});
145140
</script>
146141
</body>

doc/js_tutorials/js_assets/utils.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,24 @@ function Utils(errorOutputId) { // eslint-disable-line no-unused-vars
1919
node.parentNode.insertBefore(script, node);
2020
};
2121

22+
this.createFileFromUrl = function(path, url, callback) {
23+
let request = new XMLHttpRequest();
24+
request.open('GET', url, true);
25+
request.responseType = 'arraybuffer';
26+
request.onload = function(ev) {
27+
if (request.readyState === 4) {
28+
if (request.status === 200) {
29+
let data = new Uint8Array(request.response);
30+
cv.FS_createDataFile('/', path, data, true, false, false);
31+
callback();
32+
} else {
33+
self.printError('Failed to load ' + url + ' status: ' + request.status);
34+
}
35+
}
36+
};
37+
request.send();
38+
};
39+
2240
this.loadImageToCanvas = function(url, cavansId) {
2341
let canvas = document.getElementById(cavansId);
2442
let ctx = canvas.getContext('2d');

0 commit comments

Comments
 (0)