begin process at 2012 05 29 09:37:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Algorithme

 > 

Compression, Split & Cryptage

 > 

Images Bitmap


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Images Bitmap

lundi 23 avril 2007 à 13:52:02 | Images Bitmap

Subzero77

Bonjour a tous,
Je suis actuellement en 2eme année d'un BTS Iris (Informatique et réseau pour l'industrie et les services techniques ^^)
et je dois realisé un projet de fin d'étude qui compte dans l'obtention de mon diplome.

Ce projet consiste a prendre une photo de plaque d'immatriculation avec une Webcam de la traiter et de recupere les caracteres sous formes de chaines de caracteres !

Mais j'ai un problème : Je stock la donnée d'une image dans un tableau a une dimension et je voudrait stocker cette donnée dans un tableau a 2 dimensions.
Je ne maitrise pas tres les tableaux a 2 dimension surtout qu'il doit etre dynamique.

Si quelqu'un aurait un tuyau s'il vous plait car la je peche serieux et l'examen c'est dans un mois

Merci d'avance
lundi 23 avril 2007 à 14:14:20 | Re : Images Bitmap

buno

Administrateur CodeS-SourceS
Salut,
Si tu connais la taille de ton image, tu ne devrais pas avoir de souci: soit Width la largeur de ton image, Tab ton tableau de données et Matrix ton tableau à 2 dimensions. Le 1er pixel de la 2e ligne se trouve à Tab[Width+0] et tu dois le stocker dans Matrix[1][0]. En généralisant, ça donne ceci:
Matrix[i][j]=Tab[i*Width+j]

Je te conseille de faire un dessin au lieu de te triturer les méninges avec le code

N"hésites pas si tu as des questions...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
lundi 23 avril 2007 à 17:05:25 | Re : Images Bitmap

Loki6

Membre Club
salut,

pour compléter l'explication de Buno qui se limite au remplissage, voilà une explication que j'espère digérable sur la technique de création/accès/suppression des tableaux en programmation :

    - à moins que ton image soit en noir et blanc, le tableau aura trois dimensions.
    - un tableau à deux dimensions est un tableau à une dimension(1) dont chaque case contient un tableau à une dimension(2).
       - autrement dit, tu déclares le tableau :                int ** Tableau;   // pointeur sur l'ensemble
       - ensuite tu déclares la première partie (1) :         Tableau = new int * [nblignes];   // pointeur sur début de ligne
       - enfin pour i de 0 à nblignes-1, tu déclares (2) :  Tableau[i] = new int [nbcolonnes]; // pointeur sur colonne de ligne en cours

tu peux rajouter autant de dimensions que tu veux, soit encore une troisième pour RGB : Tableau[i][j] = new int [3]; ne pas oublier les étoiles à rajouter. le nombre d'étoiles indique le nombre de dimensions qu'il faut atteindre. Les[] fonctionnent un peu de la même manière :   
                  T : niveau 0 (tableau général) ;
                  T[] : niveau 1 (ligne spécifique) ;
                  T[][] : niveau 2 (colonne spécifique de la ligne spécifique) etc...

Le repérage se fait donc à la manière d'une matrice : Tableau[i][j][0] = R;    Tableau[i][j][1] = G;    Tableau[i][j][2] = B;

Ne pas oublier de procéder aux delete des tableaux dynamiques en fin d'utilisation ou fermeture de programme de la même manière que la création soit :

for (int i=0;i<nblignes;i++)
{
    for (int j=0;j<nbcolonnes;j++)
       delete Tableau[i][j];         // pointeur sur case RGB
    delete Tableau[i];               // pointeur sur ligne
}
delete Tableau;                      // pointeur sur le tableau


Nota :
si tu as besoin de te servir des couleurs et que tu te rends compte que c'est un peu n'importe quoi, c'est parce que dans un bmp, elles sont en réalité enregistrées à l'envers (BGR au lieu de RGB) et p-e même de droite à gauche mais je ca j'en suis plus sur.

cela dit je voudrais pas être défaitiste mais si tu pèches sur la maitrise des tableaux dynamiques et qu'il faut que tu fasses un algo de reconnaissance de caractère...

ca serait intéressant que tu mettes tes sources sur le site une fois que ca fonctionnera, ca m'intéresserait de voir comment tu as fait.
bon courage

Loki
lundi 23 avril 2007 à 17:06:45 | Re : Images Bitmap

Loki6

Membre Club
les [] sont des [ ] sans espace

Loki
lundi 23 avril 2007 à 20:53:15 | Re : Images Bitmap

SAKingdom

Membre Club
Allocateur pour pointeur de pointeurs

Pourquoi personne ne pense jamais à cette méthode et alloue la mémoire séparément pour chaque pointeurs ?
Est-elle si mauvaise ? (Sérieusement je demande. Si un pro (BruNews par exemple) passait par ici...)
En tout cas, elle est beaucoup plus rapide.

C++ (@++)

lundi 23 avril 2007 à 20:57:44 | Re : Images Bitmap

Loki6

Membre Club
A première vue c'est sensiblement le même principe. mais perso j'y trouve plus compliqué et plus le bordel. de plus malloc et free sont des commandes C pur et le but c'est de se tourner vers le c++. en tous cas pour un débutant l'allocation que j'ai proposé me parait plus simple à comprendre.

Loki
lundi 23 avril 2007 à 22:03:39 | Re : Images Bitmap

SAKingdom

Membre Club
C'est très très loin d'être la même chose. La méthode traditionnelle (allocation pour chaque pointeurs) est extrêmement lente tant pour l'allocation que pour le libération de la mémoire car à chaque tour de boucle, new et delete (ou malloc et free qui font partie de la stdlib. De toute façon, new et malloc reviennent à appeler HeapAlloc je crois) doivent être appelés à chaque fois.
Ma méthode alloue toute la mémoire nécessaire d'un coup (un seul appel à l'allocateur) et fait pointer les pointeurs sur une portion égal de la zone réservé. Quand on en a fini, un simple free (ou delete) suffis. Le gain de vitesse est significatif.

D'ailleurs, ce code peut très facilement être "recodé" en C++.

Si on se donne la peine de bien comprendre le code, on se rend compte qu'il n'y a rien de bien compliqué n'y de bordélique la dedans.

C++ (@++)

jeudi 26 avril 2007 à 08:28:48 | Re : Images Bitmap

Subzero77

Merci a tous pour vos reponses!

Enfaites, Jai une image(bmp) en Noir&blanc ( 1 pixel tout noir (0 0 0) ou tout blanc (255 255 255)) en 24bits et je voudrais la "transformée" en bitmap 8bits et stocké cette imae dans un tableau a deux dimensions ( la 8bits) !

Voila en faites mon probleme....
Merci d'avance
SaiBot
jeudi 26 avril 2007 à 08:53:51 | Re : Images Bitmap

Subzero77

Buno merci de ta reponse,
J'ai essayé la formule que tu m'as donnée mais je crois que y'a un truc que je pige pas : soit la formule Matrix[i][j]=Tab[i*Width+j]. Si je suis a le premiere ligne premiere colonne (i = j = 0) ce qui nous donne Matric[0][0] = Tab[0*Width+0] soit Tab[0]. Donc c'est ok pour l'instant. Mais c'est la que je me pose des questions : Si je passe au pixel suivant => Matrix[0][1] = Tab[0*Width+1] soit Tab[0]. La je pense que soit y'a un truc que je ne comprends pas ou j'ai loupé un épisodes.
Ne faut il pas mettre des parentheses comme ceci => Tab[(i*Width)+j] ????
jeudi 26 avril 2007 à 08:58:53 | Re : Images Bitmap

buno

Administrateur CodeS-SourceS
Attention! Tu as mal lu: Tab[i*Width+j]. Si i et j =0, cela donne effectivement Tab[0]. Mais si i=0 et j=1, on a Tab[1].
A moins, bien sûr, qu'on ait changé les priorités des opérateurs sans me prévenir...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage

1 2

Cette discussion est classée dans : images, donnée, projet, caracteres, bitmap


Répondre à ce message

Sujets en rapport avec ce message

BITMAP et OPENGL [ par Sebest ] Salut, Voila le petit problème : J'ai récupéré ce programme (http://www.cppfrance.com/article.aspx?Val=740) qui est très pratique, mais j'ai rencontré Projet morphing en commun [ par supergrey ] Salut a tous, je désire réaliser, avec l'aide de ceux qui désireront m'aider, un logiciel de morphing.Ce que je sais faire: -morphing entre 2 images d Comparaison de deux images bitmap de tailles différentes [ par rodrigo22 ] Bonjour a tous,Je tiens tout d'abord a remercier ce site que je trouve très bien fais et très facile d'accès.J'ai dans le cadre de mes études, j'ai un Pb images superposées [ par O_Neill ] Bonjour,pour mon projet en Visual C++ qui conporte 2 Bitmaps superposés, je souhaiterai pouvoir cliquer sur le bitmap qui ce trouve au premier plan en images bitmap [ par CeNedra83 ] je code en C++ sous visual 2003.NET et je dispose d'une image sous la forme de trois tableaux de composantes X, Y et Z. je voudrais créer une image BM problème couleur bitmap en API [ par raoulman ] Bonjour, J'ai une barre d'outils sur laquelle je veux faire apparaître des images personnalisées. J'ai commencé avec un bouton et une image bitmap, les CGIs PHP et images x-bitmap [ par chinui ] slt tous, j'ai un debutant en programmation avec les CGIs, j'ai u fichier en .c qui génére une image x-bitmap, mais quant j'essais de l'ouvrir avec un images Bitmap sur Win32 [ par aziz1803 ] bonjour, je fais de l'acquisition d'images à partir d'une caméra Basler, et je veux afficher les images que je récupère sur une fenêtre Bitmap. j'ai à Afficher ou masquer des images bitmap dans une boîte de dialogue!! [ par ag1987 ] Bonjour,J'ai un petit problème!! je n'arrive pas à afficher ou masquer les images que j'ai créé sous Visual C++ 6.0.J'ai éssayé d'utiliser ces command CDAORecordset et les threads [ par Poox ] Bonjour à tous, je suis en projet de BTS. Le but de mon projet et de réaliser un interface permettant de gérer une base de donnée et de faire la compa


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,608 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales