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++Builder Discussion :

Sauvegarder mes histogrammes d'images


Sujet :

C++Builder

  1. #1
    Membre du Club Avatar de Sarah!
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 43
    Points
    43
    Par défaut Sauvegarder mes histogrammes d'images
    Bonjour,
    Bon je travaille avec C++ builder6,
    j'ai une base d'image qui contient 50 images jpeg, je dois calculer l'histogramme de chaque image et le sauvegarder quelque part!!
    bon j'ai réalisé la premier étape, maintenant je cherche comment sauvegarder mes histogramme sur un répartoire ,quel composant utilisé sur c++ builder.
    Merci de m'aider

    Mes salutations

  2. #2
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Sous quel forme sont tes histogrammes?
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  3. #3
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Si tu utilise le composant TChart pour réaliser tes histogrammes, tu peux les sauvegarder au format bitmap BMP ou WMF ([ame="http://fr.wikipedia.org/wiki/Windows_Metafile"]MetaFile[/ame]).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      Chart1->SaveToMetafile( "C:\\MesHistogrammes\\histo1.wmf" ) ; 
      Chart1->SaveToMetafileEnh( "C:\\MesHistogrammes\\histo1EMF.wmf" ) ;
      Chart1->SaveToBitmapFile( "C:\\MesHistogrammes\\histo1.bmp" ) ;
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  4. #4
    Membre du Club Avatar de Sarah!
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 43
    Points
    43
    Par défaut
    oui j'utilise TChart pour réaliser mes histogramme,
    bon j'ai essayé ce que vous m'avez filé mais il m'a provoqué une classe d'exeption EFCcreateError avec le message 'impossible de créer le fichier C:\\MesHistogrammes\\histo1.wmf ,processus stopé '
    que dois-je faire?

  5. #5
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Euuuuh, Une question con:
    Est ce que le répértoire "MesHistogrammes" existe bien chez toi à la racine du disque 'C:\' ?

    Parce que ce code marche parfaitement chez moi ( BCB5 + WinXP Pro ).

    Si tu souhaite choisir le répertoire à l'aide d'une boite de dialogue de destination:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    [...]
    #include <FileCtrl.hpp>
    [...]
     
      AnsiString path ;
      if( SelectDirectory( "REPERTOIRE DE SAUVEGARDE:", "", path ) )
      {
      //Sauvegarde du fichier au format WMF
        Chart1->SaveToMetafile( path + "\\NomDuFichierAChoisir.wmf" ) ;
      //Sauvegarde du fichier au format EMF
        Chart1->SaveToMetafileEnh( path + "\\NomDuFichierAChoisirEMF.wmf" ) ;
      //Sauvegarde du fichier au format BMP
        Chart1->SaveToBitmapFile( path + "\\NomDuFichierAChoisir.bmp" ) ;
      }
    A noter que le format BMP est beaucoup plus lourd que le format WMF ou EMF (il est toujours possible de le compresser en JPEG),
    et que le EMF est plus récent que le WMF. Donc à choisir, il vaut mieux choisir le format EMF.
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  6. #6
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Salut,
    En fait, ce qu'elle cherche, c'est de sauvegarder des donnés numériques.
    Première solution qui s'impose, est d'utiliser les fichiers xml.
    Ceci, comme tu le veut sûrement, et de recharger ces données, afin de les utiliser en d'autre calcules.

    Ou bien, beacoups plus...simple, tu peux savegarder dans un fichier (ou dans une BDD), ces donnés avec des séparateur...

    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  7. #7
    Membre du Club Avatar de Sarah!
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 43
    Points
    43
    Par défaut
    salut,
    @sat83 :bon ça marche parfaitement mnt mais si je veux garder tous les histogramme de ma base d'image pour les utilisé aprés genre de ne pas ecrasé (chaque mage a sa propre histogramme)commet faire?

    @Interruption13h je trouve ton idée génial mais peux tu m'eclairer un peut comment je peux faire ça?

    merci pour votre aide.
    sarah

  8. #8
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Citation Envoyé par Sarah! Voir le message
    salut,
    @sat83 :bon ça marche parfaitement mnt mais si je veux garder tous les histogramme de ma base d'image pour les utilisé aprés genre de ne pas ecrasé (chaque mage a sa propre histogramme)commet faire?
    Ben il suffit de sauvegarder chaque histogramme avec un nom différent!!! (par exemple le nom de l'image).

    Regarde du coté des fonctions ExtractFileName, ChangeFileExt, ExtractFilePath, etc... tu arrivera a trouver ton bonheur
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  9. #9
    Membre du Club Avatar de Sarah!
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 43
    Points
    43
    Par défaut
    Ben il suffit de sauvegarder chaque histogramme avec un nom différent!!! (par exemple le nom de l'image).
    alors si ma base d'image contient 100 images je dois changer 100 fois mon code source!!!c'est fatigant
    y a pas d'autre méthodes pour faire ça?

    merci encore!

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 385
    Points : 288
    Points
    288
    Par défaut
    Citation Envoyé par Sarah! Voir le message
    alors si ma base d'image contient 100 images je dois changer 100 fois mon code source!!!c'est fatigant
    y a pas d'autre méthodes pour faire ça?

    merci encore!
    Salut,

    Pourquoi changer le code 100 fois??


    il suffit d'ajouter un indice aux noms de tes images !!

    String image_courante="Nom_Image_"+StrToInt(i)+".bmp'; // i est l'indice de l'image en cours
    « Aucun homme ne peut rien vous révéler sinon ce qui repose déjà à demi endormi dans l'aube de votre connaissance»

    « No man can reveal to you aught but that which already lies half asleep in the dawning of your knowledge »_(¯`·.__-Alg3ri4nH4ck3r-__.·´¯)_

  11. #11
    Membre du Club Avatar de Sarah!
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 43
    Points
    43
    Par défaut
    merci dz_robotix,
    il suffit d'ajouter un indice aux noms de tes images !!

    String image_courante="Nom_Image_"+StrToInt(i)+".bmp'; // i est l'indice de l'image en cours
    mais le probleme :comment acceder a le nom de l'image selectionnée si elle change de nom une fois posé sur le composant TImage??

  12. #12
    Membre expérimenté
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Points : 1 307
    Points
    1 307
    Par défaut
    Dans mon précédant post, je t'ai donné une indication sur quelques fonctions qui permette de manipuler les nom de fichiers.
    Utilise l'aide (touche F1) pour en apprendre un peu plus, je pense que tu arrivera a t'en sortir sans problème!

    Si le nom de ton image est contenue dans un AnsiString, tu peux par exemple faire un simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AnsiString image = "toto.bmp" ;
    AnsiString nomFichierHisto = ChangeFileExt( image, ".wmf" ) ;
    Ce que l'on apprend par l'effort reste toujours ancré plus longtemps...

  13. #13
    Membre du Club Avatar de Sarah!
    Profil pro
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 71
    Points : 43
    Points
    43
    Par défaut
    merci a vous,

    bon ce que je cherche exactement c'est de sauvegarder les histogrammes de façons numérique comme il m'a montrer Interruption13h , je trouve sa solution adéquate de ce que je cherche car je dois récupérer les histogrammes pour les utiliser pour la recherche des images similaires.
    merci de m'éclairer un peut comment faire ça en c++ builder .

    a+

  14. #14
    Membre chevronné

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    S'il s'agit d'histogrammes en RGB, ces derniers tiennent dans des tableaux.
    Le chemin du fichier de l'image tient aussi dans un tableau.
    Donc l'idée est de regrouper ces tableaux dans une seule et même entité.
    Par exemple (class ou struct) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class jHisto
    {
    public :
    char Image[512]; // en prévision de chemins assez longs (ou plus selon que) 
    int Red[256];
    int Green[256];
    int Blue[256];
    // et pourquoi pas ... d'autres variables ...
    int Gray[256];
    // bla bla bla 
    };
    On a ainsi sous la main un objet de taille sizeof(jHisto) suffisamment structuré pour y retrouver les données.

    Que l'on peut traiter, au niveau flux, avec les primitives (consulter l'aide pour voir tout ce que ta version BCB propose en matière de flux) :
    Et ce qui risque d'être commun à toutes les versions BCB (je pense) :

    // #include <stdio.h>
    fopen
    fseek
    ftell
    fread
    fwrite
    fclose
    Le remplissage du tableau Image avec le nom de son fichier se fait de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    jHisto HG;
    AnsiString Filename = "Contient le nom complet du fichier";
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    strcpy(HG.Image, Filename.c_str());
    Bon courage et à plus !

Discussions similaires

  1. impossible de sauvegarder mes images...
    Par bréhat dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/11/2012, 18h26
  2. sauvegarder sélection dans une image
    Par BobaL dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 20/06/2007, 01h26
  3. Problème pour sauvegarder mes données
    Par ploup dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/05/2007, 14h17
  4. Problème d'histogramme d'image
    Par ana0801 dans le forum Images
    Réponses: 3
    Dernier message: 09/01/2007, 20h50
  5. Sockets + Sauvegarde de fichiers (mp3, images...)
    Par sqwam71 dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 21/05/2006, 11h39

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