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

    Posté par . En réponse au journal Astico2D. É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 !