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

Langages Discussion :

Intensité lumineuse d'un pixel


Sujet :

Langages

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut Intensité lumineuse d'un pixel
    Bonjour à tous,

    J'aimerai pouvoir récupérer l'intensité lumineuse de chaque pixel d'une photo/vidéo d'une pictureBox. Je souhaiterai ensuite tracer un graphe à partir de ces données.
    Quelqu'un saurait comment récupérer cette intensité ? Il faut que je récupère l'intensité de chaque pixel et que je les stocke dans un tableau pour pouvoir ensuite tracer le graphe, c'est bien ça ?

    Je vous remercie d'avance ,

    Sebbur

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    pour une image tu peux utiliser les objets Image et Bitmap pour accéder à chacun de ses pixels, ex. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Image img = Image.FromFile(@"C:\Work\pic.jpg");
    using (Bitmap bmp = new Bitmap(img)) {
    	Color firstpix = bmp.GetPixel(0, 0);
    	MessageBox.Show("red: " + firstpix.R.ToString() + " / green: " + firstpix.G.ToString() + " / blue:" + firstpix.B.ToString());
    }
    Après pour le calcul de "l'intensité lumineuse" à toi de voir comment tu l'interprètes.
    L'addition des 3 composantes RGB sur une échelle de 0 à 765 pourrait faire l'affaire. A voir aussi si tu gères la couche alpha (transparence).
    Si tu as besoins des valeurs TSL, la structure Color possède des méthodes qui te les retourneront.
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Je te remercie tout d'abord de ta réponse rapide.

    En fait après avoir fait ça, je souhaiterai tracer un graphe. En ordonnée il y aurait l'intensité, et en abscisse il y aurait une longueur.
    Les valeurs TSL peuvent me servir à quoi ? Parce que je ne visualise pas bien dans quel cas je pourrai les utiliser.

    Un exemple qui illustre peut-être mieux mes propos :
    Si je prends par exemple en photo une ampoule (ou autre source lumineuse) en fonctionnement, le résultat attendu serait semblable à une gaussienne.

  4. #4
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Les valeurs TSL pourraient te servir à déterminer l'intensité lumineuse avec quelque calcul dont tu aurais le secret
    Je précisais juste que tu avais accès à ces valeurs via la structure Color, au cas où t'en aies besoin.

    Pour la gaussienne je vois à peu près le truc mais je comprends pas comment tu obtiens se genre de graph' à partir d'une image 2D.
    On pourrait faire une telle courbe pour chaque ligne, chaque colonne, ou la moyenne de chaque ligne ou chaque colonne.
    Si tu veux représenter l'intensité (1D) en sus de la map de l'image (2D) tu devrais tomber sur une représentation 3D.
    Plus je connais de langages, plus j'aime le C.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    D'accord c'est noté ! Merci de la précision parce que je ne visualisais pas forcément bien dans quel cas je pourrai utiliser le TSL.

    En fait pour chaque unité de distance (axe des abscisses) je pensais faire la moyenne de chaque colonne qui me donnerait donc un point d'intensité pour une distance.

  6. #6
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Du coup t'as arrêté une méthode pour ton calcul d'intensité ?
    J'ai fait un tit test avec les moyennes des sommes RGB pour chaque colonne et ça rend pas trop mal.
    Plus je connais de langages, plus j'aime le C.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Du coup maintenant je cherche pour récupérer les valeurs des intensités lumineuses de tous les pixels, au lieu d'en faire un par un.

    Donc du coup tu as pris une photo, tu as calculé la valeur moyenne des sommes RGB et tu les as placé dans un tableau pour tracer le graphe c'est ça ?

  8. #8
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Je parcours l'image de gauche à droite. Pour chaque colonne je fait la somme des valeurs R, G et B de tous les pixels. Je norme cette valeur pour que le max (blanc) corresponde à la hauteur maximale de l'image (pour pouvoir incruster la courbe dans la PictureBox), puis j'ajoute ces valeurs à une List<int>. Dans le Paint de ma PictureBox je parcours ces points et je trace des segments entre chaque point : en abscisse l'index dans la List, en ordonnées la valeur qu'elle contient (inversée par rapport à la hauteur de la PictureBox pour que les hautes intensités soient en haut).
    Plus je connais de langages, plus j'aime le C.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    D'accord, je vois à peu près ce que tu as fait.
    Tu as une photo du résultat graphique ?
    Désolé de poser toutes ces questions mais je suis assez débutant en C# et en plus de ça, c'est la première fois pour moi que je fais du traitement d'images.

    Merci pour tout,

    Sebbur

  10. #10
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Le résultat avec une image 200x200,
    la courbe d'intensité est dessinée en rouge (taille du Pen : 2)

    Nom : pic5.1.jpg
Affichages : 684
Taille : 25,1 Ko
    Plus je connais de langages, plus j'aime le C.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Je te remercie !
    Le résultat est plutôt satisfaisant !
    J'ai encore une question par contre :/ Comment je dois faire pour faire la somme R, G, B de tous les pixels pour chaque colonne ? Il ne faut pas faire pixel après pixel et je ne vois pas comment faire justement.

    Sebbur

  12. #12
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Comme dit plus tôt, si tu fais pixel par pixel tu te retrouveras avec une map d'intensité en 2D, soit une représentation en 3D. Là ce que je fais c'est que je parcours de gauche à droite (de 0 à width-1) et à chaque itération je parcours de haut en bas (de 0 à height -1) pour additionner tous les RGB. Voilà le code commenté que j'utilise :
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    // la liste qui contiendra les intensités
    private List<int> _intensities = new List<int>();
     
    // le nom du fichier de l'image source
    private string _picFilename = @"C:\Work\pic5.png";
     
    // l'événement du bouton qui lance le calcul
    private void btnIntensisty_Click(object sender, EventArgs e) {
    	// on charge l'image
    	Image img = Image.FromFile(_picFilename);
    	using (Bitmap bmp = new Bitmap(img)) {
    		// on efface les éventuelles valeurs déjà insérées dans la liste
    		_intensities.Clear();
    		// pour chaque colonne
    		for (int col = 0; col < bmp.Width; col++) {
    			double total = 0;
    			// pour chaque ligne
    			for (int lin = 0; lin < bmp.Height; lin++) {
    				// on fait la somme des composantes RGB
    				Color clr = bmp.GetPixel(col, lin);
    				total += clr.R + clr.G + clr.B;
    			}
    			// on normalise pour obtenir des valeurs comprises entre 0 et img.Height
    			total /= (3 * 255);
    			// on ajoute la valeur convertie en int à notre liste
    			_intensities.Add(Convert.ToInt32(total));
    		}
    		// on appelle le repaint de la PictureBox pour qu'il dessine le tracé
    		picBox.Refresh();
    	}
    }
    Plus je connais de langages, plus j'aime le C.

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Oui justement. Mais si on fait pixel par pixel et qu'on fait la moyenne par colonne on retrouve quand même le résultat identique.
    Merci beaucoup pour ton code et pour tes commentaires (ça m'aide à bien comprendre).

    Je vais de suite essayer tout ça et je te tiendrai au courant.

    Merci encore,

    Sebbur

  14. #14
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    De toute façon je passe bien sur chaque pixel pour faire la moyenne, mais je ne représente que cette moyenne et pas l'intensité de chaque pixel Allez, au besoin, le code du Paint :
    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
    19
    20
    21
    22
    // l'événement de dessin de la PictureBox
    private void picBox_Paint(object sender, PaintEventArgs e) {
    	// tous les objets qui vont bien
    	PictureBox ctrl = (PictureBox)sender;
    	Image img = Image.FromFile(_picFilename);
    	Graphics g = e.Graphics;
    	Pen p = new Pen(Color.Red, 2);
     
    	// on dessine l'image
    	g.Clear(Color.White);
    	g.DrawImage(img, 0, 0, img.Width, img.Height);
     
    	// on ajuste la taille + border pour faire zoli
    	ctrl.Width = img.Width;
    	ctrl.Height = img.Height;
    	ctrl.BorderStyle = BorderStyle.FixedSingle;
     
    	// on parcours la liste des intensités
    	for (int i = 0; i < _intensities.Count - 1; i++)
    		// on dessine un segment entre chaque point, en inversant les ordonnées pour que les hautes intensités soient en haut
    		g.DrawLine(p, i, img.Height -_intensities[i], i + 1, img.Height -_intensities[i + 1]);
    }
    Plus je connais de langages, plus j'aime le C.

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Oui bien sûr Ça j'avais bien compris

    Merci pour la suite du code !
    En revanche, lorsque j'appuie sur le bouton une exception non gérée apparaît. C'est par rapport à mon chemin de l'image source.

    J'ai alors changé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image img = Image.FromFile(_picFilename);
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Image img = pictureBox1.Image;
    J'ai bien changé toutes les lignes du code contenant cette action.
    Le changement étant fait, l'exception n'apparaît plus lorsque j'appuie sur le bouton mais il ne se passe quand même rien.

    Tu as une idée d'où peut provenir l'erreur ?

    Sebbur

  16. #16
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Et si tu mets un chemin valide dans la variable _picFilename ?
    Pour tester ton cas j'ai :
    - mis une image par défaut dans la PictureBox picBox (en mode design > propriétés > Image > ressource locale > mon fichier),
    - j'ai remplacé les Image.FromFile(_picFilename) par picBox.Image dans les deux events.
    J'obtiens le résultat escompté.
    Plus je connais de langages, plus j'aime le C.

  17. #17
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Mon chemin était logiquement valide justement. :/

    J'ai suivi tes conseils parce que l'image de ma pictureBox était en "Fichier de ressources du projet" et non en "Ressource locale".
    J'avais également fait une autre erreur en ajoutant une autre pictureBox.
    Maintenant le programme fonctionne et le graphe s'afficher correctement !

    Je te remercie encore mille fois pour ton aide, et je te remercie également d'avoir prit le temps de m'aider !

    Sebbur

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    En revanche quand j'applique le code à mon programme qui permet de prendre une capture ou une vidéo à travers un périphérique USB, cela ne marche pas et la pictureBox est barrée en rouge.
    Alors j'ai essayé de mettre une image de base et ensuite ça fonctionne à peu près, mis à part la capture de vidéo où un message d'erreur apparaît.
    J'ai également un autre soucis, c'est lorsque je zoom in/out sur la pictureBox, le graphe ne suit pas ce zoom in/out.

    Aurais-tu une idée de comment remédier à ces deux problèmes ?

    Sebbur

  19. #19
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Pour la source USB c'est peut-être un problème de synchro quelque part (je sais pas comment fonctionne ton code). Barré en rouge ? Tu veux dire qu'il y a un trait rouge diagonale ? Cela veut dire que le calcul des moyennes tombe sur une représentation linéaire (tu obtiendrais ça avec l'image d'un dégradé linéaire du noir au blanc).

    Pour le zoom ça va dépendre un peu de comment tu le fais, dans l'absolu je vois deux possibilité :
    - tracé les lignes d'intensité en fonction du facteur de zoom,
    - ne pas redessiner l'image à chaque Paint, appliquer le zoom à tout le contenu.
    N'ayant pas ton code sous les yeux je sais pas ce qui est faisable.
    Plus je connais de langages, plus j'aime le C.

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2016
    Messages : 104
    Points : 30
    Points
    30
    Par défaut
    Non en fait c'est pas le graphe qui est tracé, la pictureBox est barrée par une croix rouge.
    Voici mon code pour le graphe :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    // la liste qui contiendra les intensités
            private List<int> _intensities = new List<int>();
     
            // l'événement du bouton qui lance le calcul
            private void button6_Click(object sender, EventArgs e)
            {
                // on charge l'image
                Image img = pictureBox.Image; // Image.FromFile(_picFilename);
                using (Bitmap bmp = new Bitmap(img))
                {
                    // on efface les éventuelles valeurs déjà insérées dans la liste
                    _intensities.Clear();
                    // pour chaque colonne
                    for (int col = 0; col < bmp.Width; col++)
                    {
                        double total = 0;
                        // pour chaque ligne
                        for (int lin = 0; lin < bmp.Height; lin++)
                        {
                            // on fait la somme des composantes RGB
                            Color clr = bmp.GetPixel(col, lin);
                            total += clr.R + clr.G + clr.B;
                        }
                        // on normalise pour obtenir des valeurs comprises entre 0 et img.Height
                        total /= (3 * 255);
                        // on ajoute la valeur convertie en int à notre liste
                        _intensities.Add(Convert.ToInt32(total));
                    }
                    // on appelle le repaint de la PictureBox pour qu'il dessine le tracé
                    pictureBox.Refresh();
                }
            }
     
            // l'événement de dessin de la PictureBox
            private void pictureBox2_Paint(object sender, PaintEventArgs e)
            {
                // tous les objets qui vont bien
                PictureBox ctrl = (PictureBox)sender;
                Image img = pictureBox.Image; //Image.FromFile(_picFilename);
                Graphics g = e.Graphics;
                Pen p = new Pen(Color.Red, 2);
     
                // on dessine l'image
                g.Clear(Color.White);
                g.DrawImage(img, 0, 0, img.Width, img.Height);
     
                // on ajuste la taille + border
                ctrl.Width = img.Width;
                ctrl.Height = img.Height;
                ctrl.BorderStyle = BorderStyle.FixedSingle;
     
                // on parcours la liste des intensités
                for (int i = 0; i < _intensities.Count - 1; i++)
                    // on dessine un segment entre chaque point, en inversant les ordonnées pour que les hautes intensités soient en haut
                    g.DrawLine(p, i, img.Height - _intensities[i], i + 1, img.Height - _intensities[i + 1]);
     
            }
    Donc j'aimerai afficher ma photo prise par le périphérique dans pictureBox, et ensuite afficher le graphe de l'intensité dans pictureBox2.

    Voici mon code du zoom :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    private Size Multiplier;
     
            private Color color = Color.Black;
     
     
            public void ZoomIn()
            {
                Multiplier = new Size(2, 2);
     
                Image MyImage = pictureBox.Image;
     
                Bitmap MyBitMap = new Bitmap(MyImage, Convert.ToInt32(MyImage.Width * Multiplier.Width),
                Convert.ToInt32(MyImage.Height * Multiplier.Height));
     
                Graphics Graphic = Graphics.FromImage(MyBitMap);
     
                Graphic.InterpolationMode = InterpolationMode.High;
     
                pictureBox.Image = MyBitMap;
     
            }
     
            public void ZoomOut()
            {
                Multiplier = new Size(2, 2);
     
                Image MyImage = pictureBox.Image;
     
                Bitmap MyBitMap = new Bitmap(MyImage, Convert.ToInt32(MyImage.Width / Multiplier.Width),
                Convert.ToInt32(MyImage.Height / Multiplier.Height));
     
                Graphics Graphic = Graphics.FromImage(MyBitMap);
     
                Graphic.InterpolationMode = InterpolationMode.High;
     
                pictureBox.Image = MyBitMap;
            }
            private void button1_Click(object sender, EventArgs e)
            {
                ZoomIn(); // permet de zoomer
            }
     
            private void button2_Click(object sender, EventArgs e)
            {
                ZoomOut(); // permet de dézoomer
            }
    Lorsque j'affiche le graphe dans pictureBox (dans la même pictureBox que la photo), le graphe ne suit pas le zoom.

    Par la suite j'aimerai afficher des axes (lorsqu'une checkBox est cochée) que je dessine dans la pictureBox. J'ai déjà écris le code de cette action, mais lorsque je coche la checkBox, une erreur survient. Ceci n'est pas à faire dans l'absolu, j'aimerai pouvoir afficher le graphe dans une autre pictureBox dans un premier lieu.

    Je te remercie par avance,

    Sebbur

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Harmonisation de l'intensité lumineuse d'une image
    Par BDCmm dans le forum Traitement d'images
    Réponses: 2
    Dernier message: 29/01/2016, 23h25
  2. Intensité lumineuse et flux
    Par code_source dans le forum Images
    Réponses: 1
    Dernier message: 12/01/2011, 08h48
  3. Luminosité, l'intensité lumineuse d'un pixel.
    Par themoye dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 22/12/2010, 19h48
  4. Obtenir l'intensité d'un pixel
    Par whiteboy dans le forum OpenCV
    Réponses: 6
    Dernier message: 13/08/2008, 11h03
  5. Recuperer l'intensite d'un pixel dans une image
    Par Battosaiii dans le forum Langage
    Réponses: 6
    Dernier message: 03/07/2006, 04h44

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