Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3129 connectés 

 


Dernière réponse
Sujet : [C] Convertir GetPixel en RGB
Alload Allez please :)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Alload Allez please :)
Alload Bon, j'ai trouvé des fonctions directement dans Windows pour ce que je cherche, mon code donne la valeur RGB d'un pixel d'un bitmap. J'ai juste un problème, j'ai fait un bitmap dont tous les pixels ont comme valeur RGB (50, 100, 150) et ma fonction me renvoit 9856050. Comment convertir ça en (50, 100, 150)?
 
Voilà le code:
 
#include <windows.h>
#include <iostream>
using namespace std;
 
///////////////////////////////////////////////////////////////////
 
int main()
{
 HDC hdcImage;
 HBITMAP hbm;
 
 char szBitmap[] = "bitmap.bmp";
 int x = 1024;
 int y = 768;
 long pixelvalue = 0;
 
 hbm = (HBITMAP) LoadImage(GetModuleHandle(NULL), szBitmap, IMAGE_BITMAP, x,
                              y, LR_CREATEDIBSECTION);
    if (hbm == NULL)
        hbm = (HBITMAP) LoadImage(NULL, szBitmap, IMAGE_BITMAP, x, y,
                                  LR_LOADFROMFILE | LR_CREATEDIBSECTION);
 
    hdcImage = CreateCompatibleDC(NULL);
    SelectObject(hdcImage, hbm);
 
 pixelvalue = GetPixel(hdcImage, 1, 1);
 
 cout << pixelvalue << endl;
 
 while (1)
 {
 }
 
 return 0;
}
Alload Ben voilà, c'est pas aussi simple, c'est comme je le pensais, il faut trier les infos contenues dans le fichier bitmap pour sortir les couleurs de chaque pixel. Je vais lire un peu de doc et essayer de trouver une méthode.
Combi_A_Vendre Et bien déjà, il peut etre utile de connaitre le format bmp non?
http://members.aol.com/bellamyjc/fr/bmpfile.html
 
Après avoir épluché ça, ça ne devrait pas etre compliqué.
 
vw
minusplus

darkoli a écrit a écrit :

 
Comment charge tu l'image ? Quel Format ?




ça c'est la question essentielle !

darkoli ben soit tu fais un tableau a deux dimensions : t[x][y], soit tu fais un tableau à une dimenseion : t[y*largeur_image+x] par exemple mais ca depends de la manière dont est chargée l'image.
 
Comment charge tu l'image ? Quel Format ?
tgrx c ecrit dans mon post juste au dessus :sarcastic:
Alload Oui mais où je trouve l'int caractérisant la couleur du pixel, par exemple, 458*630?
darkoli par exemple tu peux enregistrer ton image dans un tableaud'int 32bits (format RVBA par exemple). Tu codes ta couleur sur un int et le tour est joué. Il sufit ensuite de faire une comparaison  bete et mechante avec toutes les valeurs du tableau.
Alload

minusplus a écrit a écrit :

je sens que c'est pas gagné ce topic... :D




Pourquoi? :D
 
C'est simplement que je sais pas où son codé les couleurs d'un bitmap, si j'arrive à les trouver c'est bon c'est fini après je sais faire.

minusplus je sens que c'est pas gagné ce topic... :D
tgrx Ben ca depend de ton format d'image et de la maniere dont tu organise ca dans la memoire.
 
Simplement, si tu as un BMP 32 bit de taille w*h qui est stocke dans un unsigned int* image par exemple, tu fais simplement :
 
image[x+y*w] pour avoir la valeur du pixel (x,y) ??
Alload Oui, mais comment faire pour connaitre la couleur de chaque pixel d'un bitmap?
darkoli ben enfait c'est bete et mechant.  
 
Pour chaque pixel de l'image :
  Si il est  transparent alors mettre true
  Sinon mettre False
tgrx Ben... a la main :eek:
 
Tu peux faire un petit utilitaire qui charge une image x*y, qui demande la couleur transparente, et qui te sauvegarde un tableau de booleens x*y correspondant :??:
Alload J'aimerais réaliser un bit mask d'une image bitmap en mettant FALSE pour les points dont la couleur est la couleur transparente définie et TRUE pour le reste.
 
Avez-vous une idée de comment faire ça?

 

[edit]--Message édité par Alload--[/edit]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)