Journal Astico2D

Posté par  . Licence CC By‑SA.
16
2
sept.
2021

Bonjour,

voici un petit outil que j'ai écrit pour des TP en imagerie :
Astico2D

L'acronyme signifie "Atelier Simple de Transformations d'Images au Clavier avec OpenCV en 2D" (ouf).

Astico2D est un module qui permet d'écrire de petits programmes en C++ (y compris pour des débutants), pour appliquer des transformations sur une image couleur, l'inverser ou faire un seuil en noir et blanc, afficher l'image résultat et zoomer sur une portion. Le module s'appuie sur la librairie OpenCV, disponible pour les systèmes Linux, windows et MacOS.

Commentaires bienvenus ; il manque d'ailleurs les instructions d'installation sur MacOS, si quelqu'un a un Mac et veut bien tester ça m'intéresse :o)

  • # PUB : Intérêt pour CImg ?

    Posté par  (site web personnel) . Évalué à 10.

    Bonjour,

    J'ai eu des besoins similaires il y a de cela quelques années (22 ans pour être précis…), et j'avais alors commencé l'écriture d'une "petite" bibliothèque C++ pour le traitement des images : CImg, qui a l'air de pouvoir faire ce que vous proposez (et même un peu plus ☺, mais depuis le temps, ce n'est pas forcément étonnant).
    Cette bibliothèque existe encore et je continue d'ailleurs à la maintenir activement.
    N'hésitez pas à y jeter un œil, peut-être vous y trouverez un intérêt ? (la version 2.9.9 vient justement de sortir il y a quelques heures).

    • [^] # Re: PUB : Intérêt pour CImg ?

      Posté par  (Mastodon) . Évalué à 3. Dernière modification le 03 septembre 2021 à 09:40.

      … l'informatique est un éternel recommencement …

    • [^] # Re: PUB : Intérêt pour CImg ?

      Posté par  . Évalué à 5. Dernière modification le 03 septembre 2021 à 17:56.

      En fait l'objectif ici n'est pas de proposer une nouvelle bibliothèque, mais de proposer un code de départ ultra-simple pour coder et tester des algorithmes en imagerie. La prise en main doit être rapide et le code doit être compréhensible pour des quasi-débutants en C++.

      Le schéma d'un programme est le suivant (cf demo1.cpp) : on dérive une classe fille de la classe Astico2D et on redéfinit 3 méthodes, et c'est tout.

      class MonApp : public Astico2D {
        public:
          MonApp (int argc, char **argv) : 
              Astico2D (argc, argv) 
          {
              if (!init_ok) return;  // erreur dans l'initialisation
              // ...
          }
      
          void afficher_touches_clavier () override
          {
              // ...
          }
      
          bool traiter_touche_clavier (char key) override
          {
              // ...
              return true;  // touche traitée
          }
      
          void effectuer_transformations () override
          {
              switch (touche_transfo) {
                  ...
          }
      };
      
      int main (int argc, char **argv)
      {
          MonApp app (argc, argv);
          return app.run ();
      }

      D'autre part tout se passe au clavier (et un peu à la souris), pas de widgets ni de callbacks (on peut juste rajouter des sliders, c'est "cadeau" avec OpenCV).

      Voici le genre de résultat que l'on obtient (les transformations pour les touches '1' à '3' sont juste des emplacements pour le code à écrire) :

      capture

      Je m'appuie sur OpenCV, qui est une librairie très riche, bien documentée et connue, mais ça aurait pu en être une autre en effet.

      J'ai fait évoluer ce code depuis plusieurs années, en regardant où les étudiants avaient des difficultés. Chaque étudiant ou binôme me rend plusieurs TPs, et pour évaluer tout ça c'est super pratique d'avoir une interface unifiée et qui tient en 1 seul fichier !

  • # acronyme

    Posté par  (site web personnel, Mastodon) . Évalué à 1.

    J'aurais mis le nom tout en majuscules (ASTICO2D) ou tout en minuscules (astico2d)

    “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # Computer vision

    Posté par  . Évalué à 4. Dernière modification le 08 septembre 2021 à 23:23.

    Alors pour moi, OpenCV c'était pour faire de la reconnaissance d'objets (de formes, de trucs, quoi) dans les images, fixe ou video.

    Du coup, pour faire des transformations d'images, ça marche mieux que G'MIC ou imagemagick ou autre ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.