hardos1986
Messages postés9Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention 9 mai 2005
-
5 mai 2005 à 05:29
cs_______
Messages postés6Date d'inscriptiondimanche 25 avril 2004StatutMembreDernière intervention 9 mai 2005
-
9 mai 2005 à 23:24
Salut je suis au board du desspoir je cherche deseperement a recupere les pixels d'un fichier bitmap mais en vain jai fait la boucle suivante mais ca ne donne pas du tout le resulat escompté :
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
{
a.Set(fgetc(image),i,j);
cout<<a.Get(i,j)<<" ";
}
}
ets ce qqun saurait comment recupere l'information contenue ds ces pixels sachant que je travaille sur une bmp nivo gris 20x20 donc a priori ca devrait eter simple .
J'ai essayé de voir les librairies de msdn mais je susi perdu la dedans je viens tout juste de debuter en c++ et la ca fait vraiment 1 semaine que je suis bloké dessus.
cs_LordBob
Messages postés2865Date d'inscriptionsamedi 2 novembre 2002StatutMembreDernière intervention11 mai 20099 5 mai 2005 à 09:35
tu lis ton images comme ca? au cas ou tu ne le saurais pas une image bitmap comme toutes les images est composé en gros de deux parties:
=> une en-tête
=> un partie "pixel"
donc si tu lis ton images comme ca, tu lis toutes l'en-tête est une partie des pixels !
sinon regarde sur le site il me semble qu'il y avait une source qui expliquer bien de la structure d'un fichier bitmap...
Bob...
"La chance accorde ses faveur aux esprits avertis..."
hardos1986
Messages postés9Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention 9 mai 2005 5 mai 2005 à 14:46
En effet je ne desire pas afficher la bitmap je veux juste lui appliquer un filtre gaussien par consequent je n'utlise pas les api win32 dont d'ailleurs je n'ai aucune notion
Merci pour vos reponses je vais regaerder de près le lien que tu m'a filé LordBob
hardos1986
Messages postés9Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention 9 mai 2005 7 mai 2005 à 02:54
Merci ca affiche bien des valeurs entre 0 et 255 mais le probleme c que quand je crée une bitmap monochrome ac Paint, la taille de celle ci est de 142 octets alors que l'image fait 20*20 donc normalent l'image devrait faire minimum 400 octets non ?
C'est pour ca qu'en affichant les infos du header et j'ai vu qu'en fait l'image prenait 80 octets et le header 62 octets.
Je suis un peu perdu car comment traiter 400 pixels un par un si ces derniers sont contenus dans 80 octets ?
Est ce Paint qui effectue une compression de l'image automatiquement ?
hardos1986
Messages postés9Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention 9 mai 2005 7 mai 2005 à 03:13
Merci ca affiche bien des valeurs entre 0 et 255 mais le probleme c que quand je crée une bitmap monochrome ac Paint, la taille de celle ci est de 142 octets alors que l'image fait 20*20 donc normalent l'image devrait faire minimum 400 octets non ?
C'est pour ca qu'en affichant les infos du header et j'ai vu qu'en fait l'image prenait 80 octets et le header 62 octets.
Je suis un peu perdu car comment traiter 400 pixels un par un si ces derniers sont contenus dans 80 octets ?
Est ce Paint qui effectue une compression de l'image automatiquement ?
cs_______
Messages postés6Date d'inscriptiondimanche 25 avril 2004StatutMembreDernière intervention 9 mai 2005 8 mai 2005 à 16:41
Persinnelement jutilise cette methodee et ça marche trés bien:
int width; //largeur de l'image en pixel
int height; //hauteur de l'image en pixel
unsigned int biBitCount; //nombre de bit par pixel
unsigned int bfOffBits; //décalage en octets des informations de l'image par rapport au début.
cs_______
Messages postés6Date d'inscriptiondimanche 25 avril 2004StatutMembreDernière intervention 9 mai 2005 8 mai 2005 à 16:44
Personnelement j'utilise cette méthode et ça marche trés bien:
int width; //largeur de l'image en pixel
int height; //hauteur de l'image en pixel
unsigned int biBitCount; //nombre de bit par pixel
unsigned int bfOffBits; //décalage en octets des informations de l'image par rapport au début.
hardos1986
Messages postés9Date d'inscriptionmercredi 5 janvier 2005StatutMembreDernière intervention 9 mai 2005 9 mai 2005 à 21:21
je ne comprends pas pkoi tu divises par 8 :
int j=width *height *biBitCount/8;
par contre persone ma encore dit pkoi jai une image de 142 octets alors que la resolution choisie est de 20*20 pixels soit 400 pixels soit 400 octets ??
cs_______
Messages postés6Date d'inscriptiondimanche 25 avril 2004StatutMembreDernière intervention 9 mai 2005 9 mai 2005 à 23:24
je divise par 8, tout simplement parsque biBitCount me donne
nombre de bit par pixel, or pour faire une allocation de memoire ou pour traiter la donnée comme un tableau de caractaire j'ai besoin du nombre d'octet, ce qui revient à diviser le nombre de bit par 8.
pour la taillle de l'image , quel codage de couleur vous utilisez (RVB, 16couleurs ou 256couleurs)
il se peut que vous utilisez 16 couleurs dans ce cas un pixel n'est pas codé sur un octet mais sur 4 bits (octet/2), => ce n'est plus 400 octets.