54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
|
|
/******************************************
|
|
* détection de visages avec openCV
|
|
******************************************/
|
|
function onOpenCvReady() {
|
|
console.info('OpenCV.js est chargé !');
|
|
document.getElementById('status').remove()
|
|
|
|
}
|
|
|
|
function detection_de_visages() {
|
|
src = cv.imread(ima_fond);
|
|
gray = new cv.Mat();
|
|
cv.cvtColor(src, gray, cv.COLOR_RGBA2GRAY, 0);
|
|
chargement_haarcascade();
|
|
}
|
|
|
|
function chargement_haarcascade() {
|
|
let reader_haar = new FileReader();
|
|
reader_haar.onload = function (ev) {
|
|
function str2ab(text) {
|
|
return new TextEncoder().encode(text);
|
|
}
|
|
|
|
faceCascadeFile = fichier_xml.name;
|
|
let data = str2ab(reader_haar.result)
|
|
cv.FS_createDataFile('/', faceCascadeFile, data, true, false, false);
|
|
detect_faces();
|
|
};
|
|
reader_haar.readAsText(fichier_xml);
|
|
}
|
|
|
|
function detect_faces() {
|
|
|
|
let faces = new cv.RectVector();
|
|
let faceCascade = new cv.CascadeClassifier();
|
|
// load pre-trained classifiers
|
|
faceCascade.load(faceCascadeFile);
|
|
// detect faces
|
|
let msize = new cv.Size(0, 0);
|
|
faceCascade.detectMultiScale(gray, faces, 1.1, 3, 0, msize, msize);
|
|
console.log("Il y a " + faces.size() + " visage(s)")
|
|
for (let i = 0; i < faces.size(); ++i) {
|
|
ajouter_personne_xml("nom_" + parseInt(i) + " ", faces.get(i).x, faces.get(i).y, faces.get(i).width, faces.get(i).height)
|
|
}
|
|
src.delete();
|
|
gray.delete();
|
|
faceCascade.delete();
|
|
faces.delete();
|
|
lecture_xml();
|
|
|
|
;
|
|
}
|