URL: https://linuxfr.org/news/whoswho-le-trombinoscope-facile Title: WhosWho : le trombinoscope facile Authors: YvanM Ysabeau đŸ§¶ et BenoĂźt Sibaud Date: 2021ćčŽ12月09æ—„T00:39:09+01:00 License: CC By-SA Tags: python, gtk, opencv, imagemagick, flatpak et trombinoscope Score: 53 WhosWho est un logiciel permettant de rĂ©aliser facilement des trombinoscopes, comme utilisĂ©s dans les collĂšges, lycĂ©es ou universitĂ©s. Fonctionnant sur Linux, il est codĂ© en Python, utilise GTK3, s’appuie sur ImageMagick pour la mise en page et sur OpenCV pour le recadrage automatique des photos. ![Logo WhosWho](https://framagit.org/Yvan-Masson/WhosWho/-/raw/master/WhosWho/data/icons/hicolor/scalable/apps/whoswho.svg) ---- [DĂ©pĂŽt sur Framagit](https://framagit.org/Yvan-Masson/WhosWho/) [Exemple de trombinoscope](https://framagit.org/Yvan-Masson/WhosWho/-/blob/master/example%20output.pdf) ---- Le besoin ========= J’ai travaillĂ© quelques annĂ©es dans un lycĂ©e agricole. La rĂ©alisation des trombinoscopes se faisait Ă  mon arrivĂ©e par un logiciel propriĂ©taire, dont le rĂŽle de base est de simplifier la gestion d’un domaine Active Directory : on lui donnait la liste des Ă©lĂšves au format CSV, et pour chacun on pouvait fournir une photo. Ça marchait plutĂŽt bien mais : - il fallait une photo du visage de chaque Ă©lĂšve, correctement cadrĂ©e. Ça a l’air tout simple mais ce n’est pas forcĂ©ment Ă©vident : les photos d’identitĂ© fournies Ă  l’inscription sont souvent trop anciennes, donc il faut reprendre en photo tous les Ă©lĂšves, dont la moitiĂ© prĂ©fĂšre se cacher sous une table plutĂŽt que d’ĂȘtre pris en photo ; - il fallait sĂ©lectionner manuellement (oui, avec la souris) la photo pour chaque Ă©lĂšve ; - c’est un logiciel non libre :-( Et puis un jour ce logiciel fut abandonnĂ©, il fallait trouver une alternative. Le besoin me semblait simple (comme souvent me direz-vous), mais les logiciels libres y rĂ©pondant n’étaient pas nombreux... En fait, je n’en ai trouvĂ© qu’un : [block_faces](https://moodle.org/plugins/view.php?plugin=block_faces), un module pour l’environnement d’apprentissage [Moodle](https://moodle.org/). C’est probablement une bonne solution, mais je rĂȘvais d’une solution dans l’esprit « [KISS](https://fr.wikipedia.org/wiki/Principe_KISS) » donc je n’ai mĂȘme pas pris le temps de l’essayer. La technique ============ ImageMagick ----------- J’ai eu la bonne idĂ©e d’aller voir du cĂŽtĂ© d’ImageMagick, que je connaissais de rĂ©putation comme « le couteau suisse » du traitement d’image, et j’y ai trouvĂ© *exactement* ce dont j’avais besoin : la commande [montage](https://imagemagick.org/script/montage.php). `montage` permet de mettre en page des images avec des `labels`, en prĂ©cisant assez finement la gĂ©omĂ©trie de l’ensemble. Exemple tirĂ© du lien prĂ©cĂ©dent : ```sh montage -label %f -frame 5 -background '#336699' -geometry +4+4 rose.jpg red-ball.png frame.jpg ``` Ce qui donne, Ă  partir des images `rose.jpg` et `red-ball.png` le rĂ©sultat suivant (ici le label est `%f`, soit le nom de l’image) : ![exemple_ImageMagick](https://imagemagick.org/image/frame.jpg) En parcourant la [documentation d’ImageMagick](https://imagemagick.org/), je dĂ©couvrais dans la foulĂ©e un autre utilitaire fort utile, [convert](https://imagemagick.org/script/convert.php), qui non seulement permet de changer le format d’une image (pour passer de JPG Ă  PDF par exemple) mais aussi de la redimensionner (ou mĂȘme d’appliquer d’autres effets si l’envie vous en prend). MalgrĂ© mon peu de compĂ©tences en programmation, l’idĂ©e de faire un petit logiciel rĂ©pondant Ă  mon besoin devenait envisageable. Je dĂ©cidais de me lancer avec Python. OpenCV ------ À mon propre Ă©tonnement, j’arrivais assez vite Ă  quelque chose de fonctionnel. GrisĂ© par le succĂšs, je rĂȘvais maintenant que mes photos se recadrent toute seules : je n’arrivais toujours pas Ă  prendre les photos correctement cadrĂ©es sur le visage, et faire ça Ă  la main aprĂšs coup est vraiment fastidieux. En cherchant de quoi faire de la dĂ©tection de visage, je trouvais [OpenCV](https://opencv.org/). L’utilisation me paraissait trĂšs complexe, mais je tombais heureusement sur la bibliothĂšque Python [Willow](https://github.com/wagtail/Willow/) qui simplifie Ă  l’extrĂȘme le traitement d’image de base (rotation, dĂ©coupe...) et la dĂ©tection de visage. Le rĂ©sultat =========== AprĂšs l’ajout d’une interface graphique en GTK3 (fastoche ; hum...), WhosWho Ă©tait nĂ© ! ![capture d’écran](https://framagit.org/Yvan-Masson/WhosWho/-/raw/master/screenshot.png) Il suffit de lui fournir un rĂ©pertoire contenant les photos des Ă©lĂšves et, idĂ©alement, un fichier CSV contenant leur nom et prĂ©nom (l’ordre des Ă©lĂšves dans le fichier CSV devant correspondre Ă  l’ordre des photos lorsqu’on les trie par nom de fichier). WhosWho a Ă©tĂ© conçu pour s’adapter aux cas d’usage qui me semblaient habituels : - on peut changer l’intitulĂ© du trombinoscope ; - on peut prĂ©ciser qu’un Ă©lĂšve n’a pas de photo, et une image « par dĂ©faut » sera utilisĂ©e (on peut d’ailleurs la changer si on le souhaite) ; - il est possible de corriger ou d’aider Ă  la reconnaissance des visages, qui n’est pas parfaite (et mĂȘme trĂšs Ă©tonnante parfois) ; - diffĂ©rents formats sont possibles, en 150 et 300ppp : - A4, portrait, 4x5 - A4, portrait, 5x6 - A4, landscape, 6x4 - A4, landscape, 7x4 - A3, portrait, 6x8 - A3, landscape, 9x6 - on peut choisir de trier les Ă©lĂšves par nom ou par prĂ©nom ; - si l’utilisation d’un fichier CSV est trop complexe pour l’utilisateur, il est possible de s’en passer complĂštement. Les perspectives ================ Je pense ĂȘtre le seul Ă  me servir de ce logiciel, une fois par an, pour quelques trombinoscopes d’une universitĂ©. Je suppose que le code est trĂšs mal structurĂ©, mais je n’ai pas les compĂ©tences et encore moins le temps pour amĂ©liorer ça. Ça n’empĂȘche que je suis sĂ»r que ce logiciel pourrait profiter Ă  d’autres presque en l’état, si deux dĂ©fauts Ă©taient corrigĂ©s : - bien qu’internationalisĂ©, aucune traduction n’est publiĂ©e (le français est fait mais pas commitĂ©) : je voulais utiliser [Weblate](https://hosted.weblate.org/) pour faciliter le travail des traducteurs, mais n’ai pas eu le temps de le faire ; - la mĂ©thode d’installation actuelle via `pip` est trop compliquĂ©e pour beaucoup de monde. J’avais fait la promotion de WhosWho [sur la liste de diffusion debian-edu](https://lists.debian.org/debian-edu/2020/05/msg00018.html) dans l’espoir de voir apparaĂźtre un paquet Debian, mais sans succĂšs. J’ai tentĂ© de crĂ©er un paquet [Flatpak](flatpak.org/) pour le distribuer via [Flathub](flathub.org/), mais je suis restĂ© coincĂ© sur une erreur de nom d’application et d’icĂŽne manquante... Si vous avez des compĂ©tences sur l’un de ces sujets et l’envie d’aider, n’hĂ©sitez pas Ă  me contacter !

AltStyle ă«ă‚ˆăŁăŠć€‰æ›ă•ă‚ŒăŸăƒšăƒŒă‚ž (->ă‚ȘăƒȘă‚žăƒŠăƒ«) /