begin process at 2012 05 30 02:18:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Je sèche : types et pointeurs


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

Je sèche : types et pointeurs

mardi 13 juin 2006 à 10:45:03 | Je sèche : types et pointeurs

benlustr

Bonjour à tous, je galère depuis quelques temps pour essayer de comprendre un programme que je suis en train de revoir et d'améliorer.
Actuellement, il existe deux programmes, un premier (grab) qui permet de récupérer une image provenant d'une caméra (768*576, niveau xde gris sur 8bits -> 256). Ce programme sauvegarde l'image récupérée dans un fichier .raw d'environ 450ko.
Le deuxième programme effectue un traitement sur cette image. Pour ce faire, il doit d'abord charger cette image. Or, le traitement (un truc mathématique) se fait sur des valeurs en float (nécessité d'avoir des nombres complexes etc...), et sur des images en 512*512 (en fait des matrices en 2^n, pour la rapidité).

Il existe donc une fonction (ci dessous) qui permet de charger l'image, la redimensionner, et "convertir les pixels en float".

Une partie de mon travail consiste à regrouper ces deux programmes de telle sorte que j'acquiert l'image de la caméra, je fais le traitement, et je l'affiche aussitôt.

Code :
float *chargement_image(int *IX,int *JY)
{
FILE *dfraw; /* descripteur fichier image */
float *pixelfloat,*pimage;
unsigned char *pixel;

/********** allocation mémoires ******************************************/

pixelfloat=pimage=(float*)malloc((*IX)*(*JY)*sizeof(float));
pixel=(unsigned char*)malloc(sony_X*sony_Y);

/************** lecture de l'image dans pointeur pixel ************************/

dfraw=fopen(nom_raw,"rb");
fread(pixel,sony_X,sony_Y,dfraw);

/************** conversion image en 512*512 floats ******************/

for(j=0;j<sony_Y;j++)
{
if(j<512)
for(i=0;i<sony_X;i++)
{
if(i<512)
{
*pixelfloat=(float)(*pixel);
pixelfloat++;
}
pixel++;
}
/***** sinon, on arrête la lecture de l'image ***/
}
fclose(dfraw);
return(pimage); /** renvoi de l'image en floats***/

}

Dans cette fonction, on lit tous les pixels provenant du fichier les uns après les autres au format "unsigned char" (logique car 8bits), et on les convertit en float (eventuellement : si ces pixels sont dans la plage des 512*512).
Le pointeur renvoyé est donc l'adresse à laquelle se trouve l'image, en floats.

Mon problème est le suivant. Puisque je n'enregistre plus l'image, je dois convertir en float directement ce qui me vient de la caméra ! or, cette chose est un type de données (MIL_ID spécifique à matrox) de 4octets qui contient 4 pixels. (par exemple, si je veux que mes 4 premiers pixels de mon image soient au niveau de gris 200, la première valeur 'MIL_ID' sera 0xc8c8c8c8).
Je dois donc récupérer chaque octet de ce type de variable, et le convertir en float (si j'ai bien compris, d'apres le bout de programme ci dessus, un float contient un pixel ?).

voilà, j'espere que j'ai été clair, n'hésitez pas à me poser des questions dans le cas contraire, je suis un peu dans la .... et à force j'arrive plus à rien !

Merci à vous !
mardi 13 juin 2006 à 17:16:36 | Re : Je sèche : types et pointeurs

nightlord666

Membre Club
Réponse acceptée !
Imaginons un int qui contiendra les 4 premiers pixels (0xC8C8C8C8).
Tu fait :
unsigned char* pix = &premierspixels; //pix contient en fait un tableau de 4 unsigned char, qui correspondent à tes 4 pixels


Cette discussion est classée dans : programme, image, pixel, pixels, float


Répondre à ce message

Sujets en rapport avec ce message

image gif dans un programme MFC [ par ventreapatte ] don't worry be happyJe réalise un programme MFC.Je voudrais parcourir une image au format Gif pixels par pixels et récupérer les coordonnées et 3 comp programme d'analyse colorimetrique d'image [ par crasse ] bonsoir :) !je suis a la recherche d'un programme qui puisse analyser les images venant d'une camera numerique directement relié a mon pc ( via une na traitement d'image [ par shinji09 ] Bonjours a tous, Alors voila je fais dois faire un programme sous turbo 2006 (borland C++), mon programme consiste a faire un traitement d'image a par je cherche a fair un progrrame [ par stofcmoi ] s'il vous plait je veux crée un programme qui change l'image de démarrage de Windows ( je sais bien qu'il y a pas mal de logicielle qui peuvent faire Manier les HBITMAP [ par Adeon ] Salut !J'aimerai savoir comment lire ou ecire dans un HBITMAP!je sais qu'on doi se servir de VirtualAlloc() mais je comprend pas trop comment on fait. déplacement des pixels d'une image [ par mabrouka ] bonjour comment déplacer les pixels d'une imageMerci traitement d'image à l'aide de Cximage [ par yoben ] Bonjour,L'objectif de mon programme est de récupérer un tableau de pixels d'un fichier contenant une image à partir d'un emplacement quelconque du dis Conversion image BMP [ par emrod ] Salut, j'aimerais convertir une image BMP 16 bits en image BMP 24 bits, est-ce qu'il existe une fonction ou un programme pour faire ça ?En fait, j'ai traitement d'image [ par mapinfo ] Bonsoir,Voilà, je voudrais écrire un code en C qui :Passe une image en noir et blanc.Passe une image en 256 niveaux de gris.Affiche une image par "car


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,390 sec (3)

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