From 7b17f7ad505f4af92f73d727a1d8c207763e922f Mon Sep 17 00:00:00 2001 From: Tykayn Date: Mon, 4 Oct 2021 12:26:35 +0200 Subject: [PATCH] dispatch files in folders, split opencv, documentation --- README.md | 28 ++++++--- zizou.png => assets/zizou.png | Bin zizou.xml => assets/zizou.xml | 0 photo_mem.html | 13 +++-- scripts/detection_opencv.js | 53 +++++++++++++++++ .../haarcascade_frontalface_alt.xml | 0 .../haarcascade_frontalface_alt2.xml | 0 .../haarcascade_frontalface_default.xml | 0 opencv.js => scripts/lib/opencv.js | 0 main.js => scripts/main.js | 54 ------------------ bulma.min.css => styles/bulma.min.css | 0 .../style_photomem.css | 0 12 files changed, 79 insertions(+), 69 deletions(-) rename zizou.png => assets/zizou.png (100%) rename zizou.xml => assets/zizou.xml (100%) create mode 100644 scripts/detection_opencv.js rename haarcascade_frontalface_alt.xml => scripts/haarcascade_frontalface_alt.xml (100%) rename haarcascade_frontalface_alt2.xml => scripts/haarcascade_frontalface_alt2.xml (100%) rename haarcascade_frontalface_default.xml => scripts/haarcascade_frontalface_default.xml (100%) rename opencv.js => scripts/lib/opencv.js (100%) rename main.js => scripts/main.js (91%) rename bulma.min.css => styles/bulma.min.css (100%) rename style_photomem.css => styles/style_photomem.css (100%) diff --git a/README.md b/README.md index e015a55..0940b18 100644 --- a/README.md +++ b/README.md @@ -25,15 +25,25 @@ Quand vous avez terminé de remplir et de positionner vos étiquettes, n'oubliez Attention, il n'y a pas de sauvegarde automatique, et si vous oubliez de sauvegarder, tout est perdu ! ## Reste à faire : -modifier une personne - en cours ... -saisir / modifier le titre - en cours ... -adapter la taille des étiquettes et du cercle à la résolution de l'image -modifier la couleur des étiquettes et du texte -paramétrer un peu mieux toutes les valeurs de positionnement qui sont en dur. -éviter d'avoir à re-saisir les noms que l'on retrouve sur plusieurs photos - pas facile simplement -reconnaissance faciale pour retrouver les mêmes personnages sur plusieurs photos -barre d'outils ?? -...... etc et sans compliquer le programme !!! +* TODO modifier une personne - en cours ... +* TODO saisir / modifier le titre - en cours ... + - autofocus sur le premier champ + - changer l'entrée dans le XML correspondant +* TODO adapter la taille des étiquettes et du cercle à la résolution de l'image +* TODO modifier la couleur des étiquettes et du texte + - avoir un input de type color + +* TODO éviter d'avoir à re-saisir les noms que l'on retrouve sur plusieurs photos - pas facile simplement + - utiliser le localstorage pour stocker nos entrées et une library d'autocomplétion à la saisie +* TODO reconnaissance faciale pour retrouver les mêmes personnages sur plusieurs photos +* TODO barre d'outils ?? + - à définir +...... etc et sans compliquer le programme !!! (ha ha!) Désolé si le code n'est pas très aux normes, mais je ne connaissais pas javascript avant ce programme! +## Fait +* ajouter des personnes dans le xml +* télécharger un export des données en xml +* importer un xml +* paramétrer un peu mieux toutes les valeurs de positionnement, qui sont maintenant relatives à la place de l'image, qui n'est plus obligée d'être absolue à 0, 0. \ No newline at end of file diff --git a/zizou.png b/assets/zizou.png similarity index 100% rename from zizou.png rename to assets/zizou.png diff --git a/zizou.xml b/assets/zizou.xml similarity index 100% rename from zizou.xml rename to assets/zizou.xml diff --git a/photo_mem.html b/photo_mem.html index 33a443f..de70330 100644 --- a/photo_mem.html +++ b/photo_mem.html @@ -13,8 +13,11 @@ Licence AGPL v3.0+ Photo mem - - + + + + +
@@ -28,7 +31,7 @@ Licence AGPL v3.0+

- +
- + - - diff --git a/scripts/detection_opencv.js b/scripts/detection_opencv.js new file mode 100644 index 0000000..c7e7f2c --- /dev/null +++ b/scripts/detection_opencv.js @@ -0,0 +1,53 @@ + +/****************************************** + * détection de visages avec openCV + ******************************************/ +function onOpenCvReady() { + console.info('OpenCV.js est chargé !'); + document.getElementById('status').remove() + gestion_souris(); +} + +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(); + + ; +} diff --git a/haarcascade_frontalface_alt.xml b/scripts/haarcascade_frontalface_alt.xml similarity index 100% rename from haarcascade_frontalface_alt.xml rename to scripts/haarcascade_frontalface_alt.xml diff --git a/haarcascade_frontalface_alt2.xml b/scripts/haarcascade_frontalface_alt2.xml similarity index 100% rename from haarcascade_frontalface_alt2.xml rename to scripts/haarcascade_frontalface_alt2.xml diff --git a/haarcascade_frontalface_default.xml b/scripts/haarcascade_frontalface_default.xml similarity index 100% rename from haarcascade_frontalface_default.xml rename to scripts/haarcascade_frontalface_default.xml diff --git a/opencv.js b/scripts/lib/opencv.js similarity index 100% rename from opencv.js rename to scripts/lib/opencv.js diff --git a/main.js b/scripts/main.js similarity index 91% rename from main.js rename to scripts/main.js index 76e078f..56b5fc5 100644 --- a/main.js +++ b/scripts/main.js @@ -344,7 +344,6 @@ function afficher_formulaire(e) { let highlight_circle = document.getElementById('circle_svg') souris_x = e.clientX ; souris_y = e.clientY + document.documentElement.scrollTop; - console.log('souris_x, souris_y, document.body.scrollTop', souris_x, souris_y, document.documentElement.scrollTop); if (souris_y - document.getElementById('ajout').height < 0) { sourisy = 50 } @@ -473,56 +472,3 @@ function image_finale() { ctx.stroke(); } } - -/****************************************** - * détection de visages avec openCV - ******************************************/ -function onOpenCvReady() { - console.info('OpenCV.js est chargé !'); - document.getElementById('status').remove() - gestion_souris(); -} - -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(); - - ; -} diff --git a/bulma.min.css b/styles/bulma.min.css similarity index 100% rename from bulma.min.css rename to styles/bulma.min.css diff --git a/style_photomem.css b/styles/style_photomem.css similarity index 100% rename from style_photomem.css rename to styles/style_photomem.css