IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

récuperer les pixels d'une image sur paint


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2020
    Messages : 42
    Points : 21
    Points
    21
    Par défaut récuperer les pixels d'une image sur paint
    Bonjour à tous je vous explique ce que j'essaye de faire.

    J'aimerais récupérer les valeurs d'une image que je dessine sur paint (cette image n'est constitué que de pixel noir et blanc et j'utilise le format bitmap 24bits. Je pensais que cela serait simple deux boucles for et un tableau de int que je rempli. Mais j'ai remarqué que les premières valeurs que je récupère ne correspondent pas aux pixels de mon image. Je ne sais pas si c'est à cause de l'encodage sur bitmap car je ne le connais pas très bien.

    Bref voici mon code qui me permet de d'ouvrir mon image bitmap et d'afficher la valeur de chaque pixel. Initialement c'est une image de 10*10 pixel mais j'ai remarqué que lorsque je rentre 10 et 10 dans mes boucles for comme dimension la totalité de mes pixels n'est pas retourné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    FILE* fichier=NULL;
    	fichier = fopen("image.bmp", "r");
    	if (fichier == NULL)
    	{
    		cout << "Erreur fichier image" << endl;
    	}
    	int* tab_image;
    	tab_image = new int[10*10];
    	for (int i = 0; i <20; i++)
    	{
    		for (int j = 0; j < 20; j++)
    		{
    			*(tab_image + i * 10 + j) = fgetc(fichier);
    			cout << *(tab_image + i * 10 + j)<<"-";// << "-----" << i * 40 + j << endl;
    		}
    		cout << endl;
    	}
    	fclose(fichier);
    et voici ce que donne l'exécution

    Nom : Capture.PNG
Affichages : 368
Taille : 18,3 Ko

    je ne comprend pas a quoi peux correspondre les 66-77 etc du début sachant que mon paint ne contient que 6 pixels noirs et le reste en blanc.

    Si quelqu'un peut m'indiquer comment fonctionne le format bitmap cela m'aiderait beaucoup! ou encore si c'est possible de le faire plus facilement en mettant l'image en format png ou jpeg mais d'après ce que j'ai lu ces format sont plus compliqué à traiter.

    Merci pour toute aide que vous m'apporterez!

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 548
    Points
    10 548
    Par défaut
    tu n'es pas sans savoir que pour 1 fichier (surtout avec 1 image), tu vas avoir 1 entête.

    Sur wikipédia, Windows Bitmap, 66 - 77 correspond au nombre magique BM (66 et 77 étant des valeurs décimales et non héxadécimales)

    Je ne sais pas quoi te dire de + plus pour moi le format bitmap c'est trop trop compliqué - que ce soit les différentes versions, les logiciels qui ne respectent pas ces versions, le stockage des pixels inversé, les API Microsoft qui ne sont pas très claires à l'utilisation, ...

    1 autre format est + adapté, mais pas pris en charge par Paint (il me semble) : les formats Portable pixmap (<- lien wikipedia en anglais) et notamment .ppm (P3 ou P6) ... éventuellement .pam (Portable Arbitrary Map)

  3. #3
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 042
    Points : 2 232
    Points
    2 232
    Homer J. Simpson


  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2020
    Messages : 42
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par foetus Voir le message
    tu n'es pas sans savoir que pour 1 fichier (surtout avec 1 image), tu vas avoir 1 entête.

    Sur wikipédia, Windows Bitmap, 66 - 77 correspond au nombre magique BM (66 et 77 étant des valeurs décimales et non héxadécimales)

    Je ne sais pas quoi te dire de + plus pour moi le format bitmap c'est trop trop compliqué - que ce soit les différentes versions, les logiciels qui ne respectent pas ces versions, le stockage des pixels inversé, les API Microsoft qui ne sont pas très claires à l'utilisation, ...

    1 autre format est + adapté, mais pas pris en charge par Paint (il me semble) : les formats Portable pixmap (<- lien wikipedia en anglais) et notamment .ppm (P3 ou P6) ... éventuellement .pam (Portable Arbitrary Map)
    Je vois mais comment savoir sur combien de décimales est codé l'entête, si j'ai bien compris 14 octets représentes l'entête?

  5. #5
    Membre chevronné Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 042
    Points : 2 232
    Points
    2 232
    Par défaut
    Tout est détaillé sur Wikipédia https://en.m.wikipedia.org/wiki/BMP_file_format#
    Homer J. Simpson


  6. #6
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 627
    Points : 10 548
    Points
    10 548
    Par défaut
    Citation Envoyé par Astraya Voir le message
    Tout est détaillé sur Wikipédia https://en.m.wikipedia.org/wiki/BMP_file_format#
    Est-ce que tu vois le problème ?
    Il y a 8 versions, certaines spécifiques à Adobe Photoshop ou The GIMP, et en fonction de, tu as des informations en + (transparence, profils ICC, table de couleurs, compression, ...)


    Citation Envoyé par LaSaladeHumaine Voir le message
    Je vois mais comment savoir sur combien de décimales est codé l'entête, si j'ai bien compris 14 octets représentes l'entête?
    il faut passer par les API Microsoft, parce que parser les entêtes à la main c'est très long. Et comme je le disais, certains logiciels/ API ne respectent pas les entêtes.
    Après en 24 bits sans transparence, tu ne devrais pas avoir de surprises

    Et ensuite tu as vu comment les pixels sont stockés ligne en puissance de 4 avec du bourrage, avec 1 stockage "bottom-up" (le coin haut gauche est stocké en bas droit)

  7. #7
    Membre éprouvé
    Homme Profil pro
    Programmeur des cavernes
    Inscrit en
    Août 2017
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Programmeur des cavernes
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2017
    Messages : 364
    Points : 1 241
    Points
    1 241
    Par défaut
    Et encore c'est rien, en complexité, comparé à un format comme le TIFF 6.0 -- la doc officielle fournie par Adobe comporte 121 pages.

    J'ai dû me pencher très sérieusement sur ce format pour coder un cadeau de Noël (2020) intéressant pour mon père :-)

    C'est franchement puissant, comme format d'image, mais comme toujours la puissance a un coût :-) :-) :-)

Discussions similaires

  1. rendre tranparent les pixels d'une image
    Par lisco dans le forum Qt
    Réponses: 3
    Dernier message: 13/05/2009, 18h06
  2. lire les pixels d'une image jpg
    Par shakoulé dans le forum C
    Réponses: 2
    Dernier message: 01/05/2009, 16h47
  3. [WD7.5] Compter les pixels d'une Image
    Par mlww dans le forum WinDev
    Réponses: 5
    Dernier message: 05/07/2007, 23h50
  4. parcourir les pixels d'une image
    Par nonosa dans le forum Interfaces Graphiques en Java
    Réponses: 1
    Dernier message: 13/06/2007, 16h47
  5. Changer les pixels dans une image
    Par mimane_01 dans le forum Images
    Réponses: 1
    Dernier message: 15/02/2007, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo