Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Decoupage image bmp [ Algorithme / Maths ] (Subzero77)

lundi 26 mars 2007 à 11:39:35 | Decoupage image bmp

Subzero77

Bonjour a tous...

Je suis actuellement en 2eme année de BTS IRIS et mon projet de fin d'année est le traitement d'image ( acquisition -> Niveaux de gris -> Bi-Color -> découpage)

Mon problème est le suivant :
Tout d'abord :
J'ai une image capturer à l'aide d'une webCam :
    - je stock le premier en-tête dans une Structure ( BITMAPFILEHEADER)
    - je stock le second en-tête dans une Structure ( BITMAPINFOHEADER)
    - je stock la zone de donnée (l'image) dans un tableau d'octet (byte)

J'arrive à faire le traitement d'image (conversion gris et bicolore) mais je pèche un peu sur le découpage : Celui doit se faire selon les coordonnées X et Y d'un pixel et selon une largeur et une hauteur définit dans la fonction et ceci n'importe où dans l'image !

Si quelqu'un savait me guider ou si quelqu'un a déjà travaillé la-dessus je suis bon pour écouter toutes vos idées !
SVP MONDIPLOME EN DEPANT !!!!!!!

Merci d'avance, Saibot

lundi 26 mars 2007 à 14:31:56 | Re : Decoupage image bmp

RemiONERA

Réponse acceptée !
Salut

Ton problème me semble simple. A partir des coordonnées X et Y tu détermine l'adresse de départ de ta découpe puis tu copie les octets de ton image originale dans un tableau que tu auras défini au préalable.
Voici un petit exemple de code

void Decoupe(int X, int Y,int L, int H, byte *pDecoupe)
 {
    int l,c,m;
     m=0;
      ptr=Y*LargeurBitmap+X;
     //puis tu fait la boucle suivante
     for(l=0;l<H;l++)
      {
        memcpy(&pDecoupe[m],Tablo[ptr],L);
        m+=L;
       ptr+=LargeurBitmap;
     }
}

En espérant t'avoir aidé

Il y a des jours ou je maudis franchement micosoft
Cordialement Rémi

lundi 26 mars 2007 à 16:08:23 | Re : Decoupage image bmp

Subzero77

Merci pour ta rep sa m'as bcp aidé !!
mais j'ai un peu fait autrement ! Pour ceux qui, comme moi, sont dans la merde :
--------------------------------------------------------------------------
void CExtraction::ExtraireZone(int xt, int yt, int largeur_fint, int hauteur_fint)
{
    int pos =0, pos2 = 0;
    int i = 0, j=0;
    int largeur_ini, hauteur_ini;

    //alocation mémoire pour le tableau
    nbrOctets = largeur_fint * hauteur_fint * 3;
    tabZone = new byte[nbrOctets];

    //recuper les infos de l'image
    largeur_ini = bmpinfoh.biWidth;
    hauteur_ini = bmpinfoh.biHeight;
   
    //definit les coordonnées
    pos = ((hauteur_ini - hauteur_fint - yt) * largeur_ini + xt) * 3;
   
    //Boucle pour Recopier l'image
    while(pos2<nbrOctets)    //tant que on a pas copier tout les octets
    {   
        for(i=0;i<largeur_fint*3;i=i+3) //Bcl parcour la ligne
        {
            tabZone[pos2+i]     = tabImage[pos+i];            //Copie des Données
            tabZone[pos2+i+1] = tabImage[pos+i+1];        //...
            tabZone[pos2+i+2] = tabImage[pos+i+2];        //...
        }
        pos = pos + largeur_ini * 3;        //On se positione sur la ligne suivante dans le tableau que l'on va copier
        pos2 = pos2 + largeur_fint * 3;        //On se positione sur la ligne suivante dans le tableau que l'on copie
    }

    //modification des en-tetes pour ecriture du nouveau bmp
    bmpfileh.bfSize = nbrOctets + (sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER));
    bmpinfoh.biHeight = hauteur_fint;
    bmpinfoh.biWidth = largeur_fint;
    bmpinfoh.biSizeImage = nbrOctets;
}

------------------------------------------------------------------------------------------------------------
Voili Voilou Merci encore et A++ les gens !

mardi 27 mars 2007 à 07:38:32 | Re : Decoupage image bmp

RemiONERA

Oui ton algo est équivalent. Toutefois je te suggère d'utiliser memcpy plutot que de faire les attributions dans une boucle c'est beaucoup plus rapide.

for(i=0;i<largeur_fint*3;i=i+3) //Bcl parcour la ligne
        {
            tabZone[pos2+i]     = tabImage[pos+i];            //Copie des Données
            tabZone[pos2+i+1] = tabImage[pos+i+1];        //...
            tabZone[pos2+i+2] = tabImage[pos+i+2];        //...
        }

peut être remplacé par

memcpy(&tabZone[pos2],&tabImage[pos],largeur_fint*3);

Il y a des jours ou je maudis franchement micosoft
Cordialement Rémi

mercredi 4 juin 2008 à 17:57:05 | Re : Decoupage image bmp

bossone

Salut
Je suis une étudiante en première année d'école d'ingénieur. Nous devons programmer à l'aide du langage C++.
Notre problème se situe au niveau  du passage en niveau de gris d'une image bmp. Nous n'arrivons pas à ouvrir notre image en niveau de gris
merci pour votre aide
bises

jeudi 5 juin 2008 à 09:39:22 | Re : Decoupage image bmp

RemiONERA

Salut

Tout d'abord connaissez vous le format d'un fichier Bitmap? Si ce n'est pas le cas il faut allez regarder chez microsoft (MSDN) ou encore dans l'aide du compilateur C que vous utilisez.

En gros une bitmap peut avoir plusieurs formats au niveau du codage des couleurs cela va de 1bit par couleur pour les images monochromes à 24 bit par couleur pour les images dites DIB (device independant bitmap) .

La première tache est de pouvoir charger n'importe quel type de bitmap.
Ensuite une bonne méthode pour la transformer en niveau de gris consiste à calculer la valeur moyenne des trois composantes couleur de chaque pixel.

Ensuite il n'y a plus qu'à sauver le bitmap ainsi transformé.


Il y a des jours ou je maudit franchement micosoft
Cordialement Rémi



Cette discussion est classé dans : image, bmp, decoupage, année, stock


Répondre à ce message

Sujets en rapport avec ce message

HELP ME !!! Passer une image JPEG en BMP. Projet de fin d'année [ par FLOX ] Bonjour à tous,Auriez vous un source me permettant de transformer une image JPEG en BMP. Tout cela d'une manière simple et compréhensive pour un début extraction du contour d'une image BMP [ par juliette ] On a une image en noir et blanc et on souhaiterait extraire son contour.Les images sont sous le format BMP.Extraire le contour d'une image consiste à seuillage d'une image bmp [ par coolman789 ] salut a tous !!!je voudrais savoir si il y a quelqu'un pour me dire ou je puisse trouver un algorithme pour effectuer un seuillage sur une image bmp e conversion image tiff à bmp [ par mouss8 ] je voudrais savoir comment récupéré les données dans une image tiff et bmp ou savoir la composition de ces fichiers (en-tete,info image, donné) charger une image bmp à partir du disque dur et apercu dans fenetre [ par djmix73 ] En fait, jai windows xp, je fais un projet informatique c'est une gestion de film, je voudrai charger une image bmp à partir du disque dur et avoir l' Introduire une image BMP dans un prog C [ par 751 ] 751 je voudrais afficher en fond d'écrande mon programme coè en C une image Bmp et j'ai beau chercher je ne trouve pas comment faire je voudrais savo Comment convertir une image png en bmp? [ par REk2002 ] Je cherche un programme pas trop compliqué à comprendre pour convertir une images png en format bmp. comment déplacer un bmp dans une fenêtre graphique? [ par seb1664 ] comment faire des simples translations horizontales et verticales d'une image bmp dans une fenêtre graphique.Le pb est surtout que je n'ai aucune idée BMP [ par 511 ] Bon je crois que j'ai déjà poser la question mais mon probleme n'est toujours pas résolu donc je la repose on sait jamais.Tout d'abords je précise que Charger un BMP avec une OpenFileDialog et l'afficher dans un pictureBox . [ par Dragoon ] Bonjour à tous,Je ne suis pas un spécialiste du C++ et des MFC et je souhaiterais comprendre ce qui ne va pas dans mon programme.Je voudrais que celui


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,390 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.