Accueil > Forum > > > > Couleur d'un pixel d'une fenêtre glut en mode RGB
Couleur d'un pixel d'une fenêtre glut en mode RGB
lundi 14 mars 2005 à 17:56:02 |
Couleur d'un pixel d'une fenêtre glut en mode RGB

bigbara
|
Bonjour à tous, Je voudrais savoir s'il existait une fonction permettant de récupérer les composantes de la couleur d'un pixel de coordonnées (x,y) d'une fenêtre opengl (glut) en mode RGBA... J'ai en fait charger une image .ppm avec la fonction suivante et voudrais utiliser les couleurs de chaque pixel pour une une comparaison... merci de votre réponse!!!
typedef struct { int sizeX, sizeY; GLubyte *data; } PPMImage;
static PPMImage *LoadPPM(const char *filename) { char buff[16]; PPMImage *result; FILE *fp; int maxval,lig_comm=0;
fp = fopen(filename, "rb"); if (!fp) { fprintf(stderr, "Unable to open file `%s'\n", filename); exit(1); }
if (fread(buff, 1, 3, fp)!=3) { perror(filename); exit(1); }
if (buff[0] != 'P' || buff[1] != '6') { fprintf(stderr, "Invalid image format (must be `P6')\n"); exit(1); }
if (buff[2] != 0x0a) fseek(fp,-1,SEEK_CUR);
while (fgetc(fp) == '#'){ lig_comm++; while (fgetc(fp) != '\n') ; }
fseek(fp,-1,SEEK_CUR);
result = (PPMImage *)malloc(sizeof(PPMImage)); if (!result) { fprintf(stderr, "Unable to allocate memory\n"); exit(1); }
if (fscanf(fp, "%d %d", &result->sizeX, &result->sizeY) != 2) { fprintf(stderr, "Error loading image `%s'\n", filename); exit(1); }
if (fscanf(fp, "%d", &maxval) != 1) { fprintf(stderr, "Error loading image `%s'\n", filename); exit(1); }
while (fgetc(fp) != '\n') ;
result->data = (GLubyte *)malloc(3 * result->sizeX * result->sizeY); if (!result) { fprintf(stderr, "Unable to allocate memory\n"); exit(1); }
if (fread(result->data, 3 * result->sizeX, result->sizeY, fp) != result->sizeY) { fprintf(stderr, "Error loading image `%s'\n", filename); exit(1); }
fclose(fp);
return result; }
|
|
lundi 14 mars 2005 à 22:18:18 |
Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

KeniiyK
|
Ouaip ca existe, regardes du cote de glReadPixel / et glReadBuffer au cas ou tu sois en double buffer.
@+, KeniiyK.
|
|
mardi 15 mars 2005 à 11:46:02 |
Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

bigbara
|
Merci de ta réponse Keniiyk, mais en fait, glReadPixels(GLint x,GLint y,GLsizei l, GLsizei h,GLenum format,GLenum type,GLvoid *pixels) renvoie dans pixels le contenu d'une zone rectangulaire lue dans le tampon chromatique et moi je voudrais savoir s'il était possible de juste répurer format, donc la composante de la couleur, dans une variable x par exemple de même type que type... j'espère qu'il existe un moyen, merci.
|
|
mardi 15 mars 2005 à 11:56:00 |
Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

KeniiyK
|
Et ben tu fais GLubyte pixel[4]; glReadPixels(x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,pixel);
et apres pixel[0] == composante rouge, pixel[1] == composante vert, pixel[2] == composante bleue, pixel[3] == composante alpha.
KeniiyK
|
|
mardi 15 mars 2005 à 17:46:00 |
Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

bigbara
|
Je te remercie Keniiyk, grace à toi j'y vois plus claire, car en effet cela m'a l'air de marcher pas mal ... merci encore et à la prochaine astuce!!!
|
|
samedi 19 mars 2005 à 02:15:53 |
Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

bigbara
|
En fin de compte, pixel[0] == composante rouge, pixel[1] == composante vert, pixel[2] == composante bleue, pixel[3] == composante alpha. ne donnent pas les valeurs qu'il faut après avoir chargé image .ppm... je ne sais pas si c'est un problème d'initialisation... mais je n'arrive pas à voir ce que c'est, est-ce peut être un problème d'initialisation?
|
|
samedi 19 mars 2005 à 18:40:02 |
Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

KeniiyK
|
glReadPixels(x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,pixel);
cet appel lis en x,y coord fenetre sur un carre 1*1, c'est peut-etre ca....
(si pa ca di clairement ce que tu veu faire)
KeniiyK
|
|
mardi 22 mars 2005 à 13:08:58 |
Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

bigbara
|
En fait j'ai les 2 déclarations suivantes: GLubyte *image et GLubyte pixels[4]. Mon image est chargé dans *image que j'affiche avec glDrawPixels(...) et jusque là, pas de problème. Mais j'ai remarqué que lorsque je chargais l'image complète dans pixel[4] avec glReadPixels(x,y,width,height,GL_RGBA,GL_UNSIGNED_BYTE,pixel), printf("La composante rouge est : %u\n",pixel[0]); printf("La composante verte est : %u\n",pixel[1]); printf("La composante bleue est : %u\n",pixel[2]); printf("La composante alpha est : %u\n",pixel[3]); ne m'affichent pas les mêmes résultats que printf("La composante rouge est : %u\n",image[0]); printf("La composante verte est : %u\n",image[1]); printf("La composante bleue est : %u\n",image[2]); printf("La composante alpha est : %u\n",image[3]); qui eux m'ont paru plus logique vu la couleur de l'image affiché. Mais, comme je voudrais travailler avec la couleur de chaque pixel, je me dis peut être que je travaillerai avec des composantes couleur fausses lorsque je vais charger un pixel avec lReadPixels(x,y,1,1,GL_RGBA,GL_UNSIGNED_BYTE,pixel), vu que le résultat n'a pas été satisfaisant sur l'image complète...
|
|
mardi 22 mars 2005 à 13:31:02 |
Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

KeniiyK
|
Ok mais glReadPixel fonctionne en coordonnée fenetre (== coord souris) et glDrawPixel() marche avec la position de trame active donc surement que tu lis des valeurs qui sont bien dans l'image mais qui ne sont pas au meme coordonnées, tu vois ce que je veux dire...?
KeniiyK
|
|
vendredi 16 décembre 2005 à 13:09:00 |
Re : Couleur d'un pixel d'une fenêtre glut en mode RGB

Mattpbem
|
il est aussi possible que ton image soit en RGB et non en RGBA
|
|
Cette discussion est classée dans : filename, exit, result, fp, fprintf
Répondre à ce message
Sujets en rapport avec ce message
pb ecriture ds fichier [ par YOHANONEILL ]
bonjour, voila j'ai un programme ou j'écrit dans un fichier des lignes, mais parfois la ligne que j'insert dans le fichier s'écrit 20000 ou 60000 foi
... dans le prototype d'une fonction [ par wizzo ]
bonjour !Alors voila, je voulais faire une fonction qui en une ligne me permette d'ecris dans un fichier, cad que d'habitude pour faire ça, on fait :
ECRITURE FICHIER LOGFONT [ par lectpe ]
Bonjourdans mon application, j'utilise un fenêtre de dialogue de sélection de police d'écriture :VOID SelectMainFont(HWND hwnd, HWND hRichEdit){ Zer
[UNIX]1 producteur N consomateurs [ par epmi212 ]
bonjour je doit rendre le probleme 1 prducteur N consomateurs la semaine prochaine mais j'ai un probleme de code je vois le probleme est ce que vous
Retour MySQL [ par Xantra ]
Bonjour,J'ai un petit problème avec le code suivant :#include #include #include #include int main(){ int var; MYSQ
Gros problème sur les fichiers en C [ par Zworykin ]
Bjr à tous voià dans le cadre d'un tp je dois faire les fichiers de mon programme. j'arrive à écrire dans mon fichier mais je calle trop et c'est pas
fichiers en C [ par boualiasma ]
Salut, 1) Dans mon travail, j'utilise des fichiers. je crée un fichier "essai.txt" pour le remplir fp = fopen("essai.txt","w"); // je fais des tra
ouverture d'un gros fichier txt ( taille > 3Mo) [ par malouve ]
Bonjour, J'ai a traité des fichiers txt de valeurs dont je ne connais pas le nombre d'elements mais qui font plus de 3Mo. J'ai essayé la fonction fre
problème de libération de l'éspace dynamique alloué [ par boualiasma ]
Bonsoir, J'ai un fichier contient deux champs: objet et attribut nommé "exemple.txt" : 2 11 4 11 10 10 5 O1 ..... ..... Sachant que on a la même tai
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|