Bonjour à tous. J'ai un problème bizarre : Je dois récupérer une image en niveaux de gris (0-255) en mémoire. Or, cette image est créée par une carte matrox, et est stockée dans un tableau à deux dimensions de types MIL_ID (spécial matrox). ce type occupe 4 octets (bizarerie : on a donc 4 pixels par élément du tableau) . Or, je voudrais récupérer les valeurs de chaque pixel pour les stocker dans un tableau de float (Float : également 4octets).

Pour accéder à mes éléments, j'ai donc deux pointeurs :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
float *pfloat;
MIL_ID *pmil;
en toute logique, je fais pfloat = pmil. puisque les deux types occupent le même espace, puis je fais une boucle sur l'ensemble du tableau

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
for(i=0 ; i<taille_x ; i++)
    for(j=0 ; j<taille_y ; j++)
       *pfloat = *pmil;
or, grande surprise, je n'ai pas la même chose dans les deux tableaux. exemple, pour une case donnée, je vais avoir :
*pmil = $C8C100FF par exemple (c'est donc juste, ce sont bien mes pixels)
*pfloat = $20000000 (j'ai toujours un truc de ce genre, un chiffre puis que des 0).

bref, je ne comprends pas pk mes données sont modifiées comme ça. J'ai essayé les opérateurs de cast, ça ne change rien !

Merci à vous, et bravo si vous trouvez !!!

Benjamin