IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèque standard C Discussion :

Traitement d'images - utilisation de librairies


Sujet :

Bibliothèque standard C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 31
    Points
    31
    Par défaut Traitement d'images - utilisation de librairies
    Bonjour,

    Pour un projet de traitement d'images, je dois
    1. extraire des sous-fenêtres d'images
    2. redimensionner ces sous-fenêtres
    3. avoir un accès pixel par pixel au résultat.

    Afin d'éviter de réinventer la roue, j'aimerais pourvoir utiliser l'une ou l'autre librairie. J'ai un peu exploré les différentes possibilités : openCV, Freeimage, SDL, openJPEG, ImageMagick, ... Mais je m'y perds un peu. OpenCV a l'air d'être de trop haut niveau, ... bref, je ne sais que choisir. Et de toute façon, je ne sais comment intégrer ces librairies à mon programme.

    Attention : j'ai quelques contraintes :

    1. le programme doit être le plus rapide possible. Je ne peux donc pas me permettre d'écrire dans des fichiers les sous-images extraites, de les rouvrir, redimensionner, puis réécrire, puis relire, etc. L'ensemble doit travailler uniquement en mémoire vive, et de façon efficiente.
    2. l'ensemble du code doit être du C (pas de C++!) et doit produire un seul programme. La bibliothèque doit être intégrée de manière transparente (pas question par exemple de simplement appeler ImageMagick en ligne de commande).


    Pouvez-vous m'aider, please?

    D'avance, merci!

  2. #2
    Membre éclairé Avatar de valefor
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    711
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 711
    Points : 790
    Points
    790
    Par défaut
    Je pense que le point (3) est implicite.

    La première chose que tu va faire quand tu vas ouvrir l'image est de la récupérer dans une structure représentant ses pixels. Pour cette étape je pense que n'importe quelle libraire fera l'affaire (encore que cela dépend du format de ton image originale).

    Pour ce qui est de l'accès à des parties de l'images, pour avoir utilisé SDL, je pense que les structures SDL_Rect sont directement utilisables pour décrire tes zones.

    Pour le redimensionnement il doit y avoir plusieurs algos, SDL ne l'implémente pas (ou alors dans une libraire tiers), mais tu dois pouvoir l'implémenter toi-même.

    Je n'ai pas utilisé d'autres librairies que SDL.

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    gd, de Tomas Boutell ...
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par gnulix Voir le message
    Et de toute façon, je ne sais comment intégrer ces librairies à mon programme.
    Généralement, la librairie possède
    • des headers
    • des fonctions
    • une doc
    • un fichier ".so" ou ".a"

    Et parfois des sources d'exemples mais ce n'est pas forcé.

    Pour intégrer donc la librairie à ton programme, il te faut procéder dans l'ordre aux étapes suivantes
    1. lire la doc de la librairie
    2. trouver la fonction qui t'intéresse pour le travail que tu fais
    3. inclure en début de ton code le ou les headers associés à la fonction
    4. appeler simplement cette fonction dans ton code (comme tu appelerais "printf()" ou "fopen()")
    5. linker la librairie lors de la compilation (plus spécifiquement lors de l'édition de liens). Il te suffit juste de mettre le nom du ".so" ou ".a" dans la ligne de compilation. Si t'as utilisé une fois dans ta vie une fonction de "libm.a" (comme sqrt() par exemple) tu sais utiliser toutes les autres librairies
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre actif Avatar de ironzorg
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 288
    Points : 245
    Points
    245
    Par défaut
    Pour le redimensionnement il doit y avoir plusieurs algos, SDL ne l'implémente pas (ou alors dans une libraire tiers), mais tu dois pouvoir l'implémenter toi-même.
    Il existe un outil de la SDL nommé SDL_rotozoom, qui permet la rotation et accessoirement le redimmensionnement des images

    La première chose que tu va faire quand tu vas ouvrir l'image est de la récupérer dans une structure représentant ses pixels.
    Hum... Si j'ai bien compris le probleme, je pense que la création de structures est inutile: je pense qu'il vaudrait mieux utiliser des Rects ( toujours avec SDL ), afin de créer dynamiquement des surfaces ( en revanche je ne saisis pas tres bien la notion de sous fenetres... je pense que c'est une partie de l'image que tu veux extraire, mais si tu veux faire du multi fenetrage, ce n'est pas avec SDL que tu le feras ).

  6. #6
    Membre régulier Avatar de Topeur
    Profil pro
    Inscrit en
    Février 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 91
    Points : 78
    Points
    78
    Par défaut openCV
    Citation Envoyé par gnulix Voir le message
    Bonjour,
    Pour un projet de traitement d'images, je dois
    1. extraire des sous-fenêtres d'images
    2. redimensionner ces sous-fenêtres
    3. avoir un accès pixel par pixel au résultat.
    Bonjour,

    Utilisant depuis un bout de temps OpenCV, je pencherai plus evidemment pour ce dernier.
    Il existe des fonctions deja codé pour reconnaitre des choses dans les images et sinon, comme la plupart des librairies, tu travaille en pixel par pixel.
    Pour redimensionné, tu a le cvResize, pour extraire une partie de l'image, il y a GetSubRect.

    Cette bibliotheque m'as paru plus simple que SDL, mais peut être est ce du au fait que j'ai eu une meilleure formation avec.

    Bonne journée

Discussions similaires

  1. Traitement d'images : quelle librairie utiliser ?
    Par [ZiP] dans le forum Débuter
    Réponses: 4
    Dernier message: 12/10/2011, 22h14
  2. librairie pour traitement d'image
    Par isoman dans le forum Traitement d'images
    Réponses: 4
    Dernier message: 21/03/2008, 17h09
  3. Réponses: 1
    Dernier message: 23/06/2006, 20h17
  4. Traitement d'images / Librairie
    Par BNS dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 07/02/2006, 13h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo