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

C++ Discussion :

Traitement de base d'image


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 74
    Points : 66
    Points
    66
    Par défaut Traitement de base d'image
    Bonjour,

    Je voulais savoir quel outil utilisé pour effectuer des traitements d'image ? Par exemple ajouter un rectangle dans une image.

    Je pensais peut etre a DirectShow ou DirectDraw ?
    J'ai vu aussi des librairies comme CImg, mais ca m'a l'air bien compliqué...

    Pour l'instant ce que je veux, c'est d'ouvrir une image (jpg ou bmp je pense) d'ajouter par exemple un carre au milieu et d'enregistrer cette nouvelle image.

    Pouvez vous me conseiller ?
    merci

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Je ne pense pas que les bibliothèques temps réel du type DirectX te soient d'un grand secours ; ce sera trop compliqué pour pas grand chose.

    Les bibliothèques du style CImg ne sont pas si difficiles que ça à appréhender, et seront le meilleur choix je pense. Enfin après ça va dépendre de ce que tu veux ajouter dans tes images à part des carrés...

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 74
    Points : 66
    Points
    66
    Par défaut
    mdr en fait c'est pour prendre en main (d'apres ton avatar, ca doit etre dur pour toi ) la manipulation d'image.

    Donc tu me conseil d'aller voir CImg ?
    Pendant que j'y suis, tu as un petit tuto tout simple sur CImg ?

    Sinon, je ne pense pas qu'on puisse ouvrir un fichier image et le modifier comme ca a la barbare (avec fopen...) ? Je pense que non a cause des entetes.

    Une derniere chose, j'aimerai tant qu'a faire recuperer l'image sous forme matriciel, CImg le fait je suppose ?

  4. #4
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut
    Pour le traitement d'image (va savoir ce que tu comptes faire par la suite avec), OpenCV, ou plus simple a mettre en place pour ce que tu comptes faire Camellia (les deux sont compatible, la seconde reprenant les meme structure au nom pret -> suffit de faire un cast)

    Mais bon, revenons a nos mouton, avec OpenCv, ca donne ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    IplImage * img = cvLoadImage( "nom_de_fichier" ); //tu ouvres et stock ton image
     
    /*Pour faire un rectangle */
    cvRect( img, cvPoint( x1, y1 ), cvPoint( x2, y2 ) ); 
     
    /*Pour manipuler un les pixels, c'est un vecteur  1D qui enchaine RGB RGB RGB ....*/
    img->imageData [0] = 255; //par exemple
     
    cvSaveImage( "toto.jpg", img ); //les extensions png, bmp, jpg et d'autres sont acceptés
    Tu peux aussi faire un film avec des images successive... C'est bien plus puissant que tes besoins mais c'est tres simple d'utilisation.

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 74
    Points : 66
    Points
    66
    Par défaut
    oh merci, oui je pense que cela va me convenir

    Je test OpenCv tout de suite.

  6. #6
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    CImg est très bien aussi. je fais mon gros projet avec, sans soucis...
    C'est plus facile qu'openCV à digérer...

  7. #7
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut
    Oui mais c'est aussi plus lent (sans avoir fait de bench moi-meme je l'admet). L'installation d'OpenCv peut etre fastidieuse pour les débutant en comparaison à CImg mais pour le reste (en tout cas ce que Freyja veut faire), c'est comme sur des roulettes.

  8. #8
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    plus lent?
    Ca j'en doute...
    Je l'utilise pour des traitements assez poussés. Je pense sincèrement que bien d'autres points du programme font ralentir, plus que la librairie.

    Maintenant, j'admet que la liv openCV est bien plus fournie...
    Les deux choix se valent pour moi...

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 74
    Points : 66
    Points
    66
    Par défaut
    pffiou j'ai mal a la tete...

    harsh apparement il y a quelque erreurs dans ton code, comme dans la fonction vcRect, il demande 4 parametres. M'enfin c pas grave, le plus chiant, c'est qu'il me dit qu'il manque des dll, et pourtant ils sont bien dans le repertoire OpenCv\bin\. Qd je les copie dans le repertoire de mon application, ca semble passé. Mais bon, ca m'embete de les deplacer (copier).

    Sinon, poukill vu que tu aimes bien CImg, pourrai tu me montrer un ensemble bidon d'utilisation de cette librairie ? (ouverture et enregistrement de l'image ca sera deja pas mal )
    Merci

  10. #10
    Membre expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Points : 3 344
    Points
    3 344
    Par défaut
    Citation Envoyé par Freyja
    le plus chiant, c'est qu'il me dit qu'il manque des dll, et pourtant ils sont bien dans le repertoire OpenCv\bin\. Qd je les copie dans le repertoire de mon application, ca semble passé. Mais bon, ca m'embete de les deplacer (copier).
    Ben faut pas que ça t'embête, c'est ce qu'il fallait faire

  11. #11
    Membre habitué Avatar de harsh
    Inscrit en
    Février 2005
    Messages
    229
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 229
    Points : 193
    Points
    193
    Par défaut
    La doc est tres bien faite pour ce que tu veux mais voili:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cvRect(img, cvPoint(x1,y1), cvPoint(x2,y2), CV_RGB(255, 0, 0)); //pour faire du rouge
    Pour les dll, il manque rien si tu places tout au bon endroit! tu travaille sous VC++? qu'elle version? Qu'elles soit dans OpenCV bin est une chose, mais si tu as regardé la doc et plus precisement la FAQ, il t'explique l'installation et te dise de mettre le repertoire OpenCV/bin (me semble bien que c'est celui ci) dans le Path de windowzzzz

  12. #12
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Citation Envoyé par Freyja
    pffiou j'ai mal a la tete...

    harsh apparement il y a quelque erreurs dans ton code, comme dans la fonction vcRect, il demande 4 parametres. M'enfin c pas grave, le plus chiant, c'est qu'il me dit qu'il manque des dll, et pourtant ils sont bien dans le repertoire OpenCv\bin\. Qd je les copie dans le repertoire de mon application, ca semble passé. Mais bon, ca m'embete de les deplacer (copier).

    Sinon, poukill vu que tu aimes bien CImg, pourrai tu me montrer un ensemble bidon d'utilisation de cette librairie ? (ouverture et enregistrement de l'image ca sera deja pas mal )
    Merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #include "CImg.h"
    using namespace cimg_library;
     
    int main()
    {
       CImg <unsigned char> image("tonimage.bmp");
       image.display("ton affichage"); // affichage
       image.save_bmp("ma_sauvegarde.bmp");
       return 0;
    }
    C'est pas très compliqué...

  13. #13
    BNS
    BNS est déconnecté
    Membre du Club
    Inscrit en
    Juin 2005
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 129
    Points : 45
    Points
    45
    Par défaut
    Au début, j'ai utilisé la bibliothèque CxImage, que je trouve assez complète, tu la trouveras ici: http://www.xdp.it/cximage/
    Je l'ai cependant trouvé assez lourde, elle ralenti beaucoup le programme. Je me suis alors tourné vers une méthode "à la main". On n'est jamais mieux servi que par soi-même, alors j'ai écris mes propres fonctions, pour faire ce que je voulais faire niveau traitement d'image. Une fois que tu as compris le truc, ca va tout seul.

  14. #14
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 74
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par harsh
    La doc est tres bien faite pour ce que tu veux mais voili:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cvRect(img, cvPoint(x1,y1), cvPoint(x2,y2), CV_RGB(255, 0, 0)); //pour faire du rouge
    Oui c'est ce que j'ai fait mais voici apres le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2664: 'cvRect' : impossible de convertir le paramètre 1 de 'IplImage *' en 'int'
    Mais je ne me suis pas plus penché dessus.

    Citation Envoyé par harsh
    Pour les dll, il manque rien si tu places tout au bon endroit! tu travaille sous VC++? qu'elle version? Qu'elles soit dans OpenCV bin est une chose, mais si tu as regardé la doc et plus precisement la FAQ, il t'explique l'installation et te dise de mettre le repertoire OpenCV/bin (me semble bien que c'est celui ci) dans le Path de windowzzzz
    C'est ce que j'ai fait. J'utilise le compilateur de visual c++ 2005 Express.
    Bon j'avoue me suis pas penché sur la FAQ non plus, je deviens faineant lol.

    poukill :
    pas encore essayer ton code, j'y vais de ce pas.

  15. #15
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 74
    Points : 66
    Points
    66
    Par défaut
    Citation Envoyé par Freyja
    Oui c'est ce que j'ai fait mais voici apres le message d'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C2664: 'cvRect' : impossible de convertir le paramètre 1 de 'IplImage *' en 'int'
    Mais je ne me suis pas plus penché dessus.
    j'ai remplacé cvRect par cvRectangle et ca marche

Discussions similaires

  1. traitement de base d'une image
    Par maraval dans le forum Traitement d'images
    Réponses: 7
    Dernier message: 18/03/2010, 15h19
  2. traitement et transformation d'images
    Par Gobelins dans le forum C
    Réponses: 3
    Dernier message: 02/01/2008, 12h13
  3. traitement de couleur d'image en continu
    Par Little_franky dans le forum C++Builder
    Réponses: 1
    Dernier message: 27/11/2006, 18h12
  4. base d'images
    Par jihed dans le forum Bases de données
    Réponses: 14
    Dernier message: 02/07/2004, 15h06

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