wxccxw
Messages postés755Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention30 janvier 2011
-
12 juin 2009 à 01:25
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 2013
-
15 juin 2009 à 12:44
Bonsoir,
quelqu'un connaiterait-il la facon dont il faut s'y prendre pour charger un BMP de 320*240
et recuperer la couleur en R G B (0 a 255) de chacun de ces pixel dans un tableau style :
int x,y;
int couleurR[320][240];
for(x = 0;x < 320;x++)
{
for(y = 0;y<240;y++)
{
couleurR[x][y] = Red Couleur a ce pixel;
etc...
}
}
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 12 juin 2009 à 08:50
Salut
Au lieu de récupérer les valeurs pixel par pixel, utilise la fonction GetBitmapBits().
GetBitmapBits (hBmpImg,W*H*4,ucBits);
Dans ucBits sera copier tous les pixels de ton image:
ucBits[0], bleu du pixel 0
ucBits[1], vert du pixel 0
ucBits[2], rouge du pixel 0
ucBits[3], transparence di pixel 0
ucBits[4], bleu du pixel 1.....
A+
____________________________________________________________________________
Mon site internet :
http://ImAnalyse.free.fr
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 12 juin 2009 à 19:07
Oui mais selon MSDN GetBitmapBits() est dépassée et devrait être remplacée par GetDIBits(). Il existe une autre solution pour récupérer les bits du bitmap. On le charge avec LoadImage() en mettant LR_CREATEDIBSECTION en dernier paramètre comme ceci par exemple:
HBITMAP hbitmap=(HBITMAP) LoadImage(0, "c:\\image.bmp",IMAGE_BITMAP,0,0, LR_CREATEDIBSECTION | LR_LOADFROMFILE);
On récupère ensuite les données du bitmap y compris les valeurs des bits en utilisant GetObject().
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 12 juin 2009 à 02:30
Salut,
Sous Windows, une solution consiste à créer un HDC avec CreateCompatibleDC() et lui associer ton bitmap avec SelectObject(). Ainsi, tu pourras utiliser GetPixel() pour récupérer les valeurs RGB de chaque point en spécifiant ses coordonnées.
puis dans ma boucle
Colors = GetPixel(Bitmap,i,j);
et je convertie comme sa :
Colors & 0x000000FF;
(Colors & 0x0000FF00) >> 8;
(Colors & 0x00FF0000) >> 16;
mais a l'affichage, rien n'apparait ( je precise qu'il sagit d'une image que j'ai recuperer de la webcam et que je remplace certaine couleur par une autre.
le truc c'est que quand je rentre la couleur moi meme, sa marche exemple
0 255 0
mais quand je met les couleur du bitmap sa ne fonctionne pas !
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
wxccxw
Messages postés755Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention30 janvier 2011 12 juin 2009 à 21:17
aussi le probleme vient peut etre que la couleur de la webcam est 16bits et celle du bitmap 24 :\
mais la conversion me parait bonne.
je vais faire un test en 256.
wxccxw
Messages postés755Date d'inscriptionsamedi 15 mai 2004StatutMembreDernière intervention30 janvier 2011 13 juin 2009 à 02:56
J'ai reussis ! mais... mon image 240 * 320 ( j'ai converti les couleurs de mon bmp 24b en 255 255 255) mais l'image se repete et se superpose sur mon affichage qui fait pourtant bien 320 x 240.
une idée ?
Pistol_Pete
Messages postés1053Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 9 juillet 20137 15 juin 2009 à 12:44
Si tu l'a converti en 24 bits par pixel, il faut multiplier par 3 et non par 4
Pour accéder au bits x=30 et y=90, il faut faire:
ucBits[(x+y*Width)*3]
A+
____________________________________________________________________________
Mon site internet :
http://ImAnalyse.free.fr