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

OpenCV Discussion :

Lire une image BMP puis modifier les valeurs des pixels (codés en RVB)


Sujet :

OpenCV

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 55
    Points : 29
    Points
    29
    Par défaut Lire une image BMP puis modifier les valeurs des pixels (codés en RVB)
    Salut,

    Comme je suis débutant!!!

    Est ce que quelqu'un peut m'aider? (c'est urgent)


    je veux un petit programme (code en C) ,où on ouvre une image .bmp et la stoker sous forme d'une matrice (dans la mémoire ) puis accéder à chaque élément de la matrice (les pixels (sous forme RVB))pour faire quelques modifications et enfin enregistrer la nouvelle image .bmp dans un autre emplacement !!!



    PS : je veux just ça ! pas autre chose!!
    je veux pas entrer dans les détails (surtout pas complique les choses) sur la manipulation des images,aussi le code doit être seulement en C pas de C++!!!



    merci pour toute réponse.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 123
    Points
    123
    Par défaut
    Bonjour,

    Pour lire une image en opencv, il faut utiliser la fonction cvLoadImage, l'accès aux pixels se fait grâce à la fonction cvSet2D/cvGet2D et sauvegarder avec cvSaveImage

    Exemple pour une image en niveaux de gris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    IplImage* image = cvLoadImage("c:/test.bmp");
    CvScalar pixel;
    pixel=cvGet2D(image,10,25); //lecture du pixel ligne 10 colonne 25
    std::cout<<"valeur du pixel :"<<pixel<<std::endl;
    cvSet2D(image,10,25,100);
    cvSaveImage("c:/resultat.bmp",image);
    Exemple pour une image en 3 couleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    IplImage* image = cvLoadImage("c:/test.bmp");
    CvScalar pixel;
    pixel=cvGet2D(image,10,25); //lecture du pixel ligne 10 colonne 25
    std::cout<<"valeur du pixel : bleu "<<pixel.val[0]<<" Vert "<<pixel.val[1]<<" Rouge "<<pixel.val[2]<<std::endl;
    pixel.val[0]=100;
    pixel.val[1]=100;
    pixel.val[2]=100;
    cvSet2D(image,10,25,pixel);
    cvSaveImage("c:/resultat.bmp",image);
    A+

    Hunta
    newbie un jour, newbie toujours
    n'oubliez pas le

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

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 123
    Points
    123
    Par défaut
    Pour ce qui concerne le langage à savoir C ou C++, il me semble que opencv n'utilise que des structures (pour ce que j'en sais) donc ça devrait aller.

    A+

    Hunta
    newbie un jour, newbie toujours
    n'oubliez pas le

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 55
    Points : 29
    Points
    29
    Par défaut
    Merci pour votre aide,mais le problème c'est que la fonction "cvLoadImage" n'a pas marcher avec C mais elle marche avec C++!!

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

    Informations forums :
    Inscription : Février 2008
    Messages : 110
    Points : 123
    Points
    123
    Par défaut
    Re,

    Bon ben en fait, ça devrait pas aller... ça va pas tout court .
    Je ne sais pas trop quoi te dire à part que opencv contient environ 300 fonctions C avec quelques fonctions c++ (d'après ce que j'ai lu sur le net, ce qui ne nous avance pas trop...).
    Par contre, je sais que certains des exemples (rep opencv/samples/c) sont en extension .c et d'autre en .cpp donc à tout hasard, regarde voir si tu peux les exécuter en c pur.
    Désolé de ne pas être d'une grande aide, j'ai toujours fait du C/C++ donc là .

    A+,

    Hunta
    newbie un jour, newbie toujours
    n'oubliez pas le

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IplImage* image = cvLoadImage("c:/test.bmp");
    Il n'y a pas beaucoup de modifications pour passer cette fonction en C plutot que C++. Moi par contre, je ne travaille que en C donc je la connais tres tres bien

    En C, cette fonction prends 2 arguments (pt en C++ aussi d'ailleurs)
    l'un etant le chemin d'acces et l'autre le nombre de canaux de l'image

    Voici donc la solution normalement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //image noir et blanc
    IplImage* image = cvLoadImage("c:/test.bmp",1);
     
    //image couleur
    IplImage* image = cvLoadImage("c:/test.bmp",3);


    Mais au vu de l'urgence, je pense que ce post arrive tres nettement trop tard

Discussions similaires

  1. Réponses: 7
    Dernier message: 08/02/2010, 23h02
  2. Réponses: 4
    Dernier message: 24/12/2008, 21h35
  3. Réponses: 11
    Dernier message: 02/06/2008, 23h07
  4. Lire un fichier Excel pour modifier les valeurs des cellules
    Par Paloma dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 31/10/2006, 16h13
  5. Réponses: 20
    Dernier message: 23/03/2006, 17h21

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