begin process at 2012 02 13 01:05:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > CLASSER DES IMAGES EN FONCTION DE LEUR COULEUR DOMINANTE/CONTIENT UNE FONCTION DÉTECTANT LA COULEUR MOYENNE D'UNE IMAGE

CLASSER DES IMAGES EN FONCTION DE LEUR COULEUR DOMINANTE/CONTIENT UNE FONCTION DÉTECTANT LA COULEUR MOYENNE D'UNE IMAGE


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Graphique Source .NET ( DotNet ) Classé sous :classement, Dossier, Couleur, image Niveau :Débutant Date de création :17/02/2008 Vu / téléchargé :8 403 / 316

Auteur : Yaurthek

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note


 Description

Cliquez pour voir la capture en taille normale
Bonjour,
Je poste ma première source : elle permet de classer des images en fonction de leur couleur dominante, ou plus simplement d'obtenir la couleur moyenne d'une image grâce à une fonction.
J'ai fait des efforts pour commenter, j'espère que ce sera suffisant.
N'hésitez pas à me donner votre avis/conseil...

Source

  • 'Fonction retournant la couleur moyenne d'une image :
  • ''' <summary>retourne la couleur d'ambiance d' une image</summary>
  • ''' <param name="bitmp">l'image a utiliser</param>
  • ''' <param name="precision1">le nombre de boucles en hauteur et largeur</param>
  • ''' <param name="precision2">le nombre de pixels vérifiés sur chaques passage d'une boucle</param>
  • '''<remarks>en cas d'erreur, la fonction retourne une couleur rouge</remarks>
  • Public Function checkColor(ByVal bitmp As Bitmap, Optional ByVal precision1 As Integer = 5, Optional ByVal precision2 As Integer = 4) As Color
  • Try
  • 'Pour eviter erreur "objet utilisé... " en cas d'appel de la fonction dans un thread séparé
  • Dim imgsize As Drawing.Size = bitmp.Size
  • Dim coul As New Color
  • 'composantes moyennes finales de l'image
  • Dim rougeTotal As Int32 = 0
  • Dim vertTotal As Int32 = 0
  • Dim bleuTotal As Int32 = 0
  • Dim bouclex As Int64 = 0 'emplacement x de la zone a checker
  • 'Parcours l'image sur une "grille" et fait une moyenne des composantes RGB sur de petites zones
  • 'Boucle horizontale
  • ' x-1
  • For boucle1 As Integer = 0 To precision1 - 1
  • bouclex += (imgsize.Width / precision1) - 5 'x | -5: decal pixel
  • Dim boucley As Int64 = 0 'emplacement y de la zone a checker
  • 'Boucle verticale
  • ' y-1
  • For boucle2 As Integer = 0 To precision1 - 1
  • boucley += (imgsize.Height / precision1) - 5 'y | -5: decal pixel
  • 'composantes moyennes sur une boucle verticale
  • Dim rouge As Int32 = 0
  • Dim vert As Int32 = 0
  • Dim bleu As Int32 = 0
  • 'check une petite zone de pixels
  • '--------------------------------------------
  • '3 fois x
  • For i = bouclex To bouclex + precision2 - 1 '+precision independant de x et y : nbre de pixels contigu a checker
  • For j As Integer = boucley To boucley + precision2 - 1 '+precision independant de x et y : nbre de pixels contigu a checker
  • 'ajoute les differentes composantes des pixels
  • rouge += bitmp.GetPixel(i, j).R
  • vert += bitmp.GetPixel(i, j).G
  • bleu += bitmp.GetPixel(i, j).B
  • Next
  • Next
  • 'moyenne des composantes sur la zone
  • rouge = rouge / (precision2 * precision2)
  • vert = vert / (precision2 * precision2)
  • bleu = bleu / (precision2 * precision2)
  • 'Ajout de la moyenne de zone à la moyenne finale
  • rougeTotal += rouge
  • vertTotal += vert
  • bleuTotal += bleu
  • '--------------------------------------------
  • Next
  • Next
  • 'moyenne des couleurs de l'image en fonctions du nombre de boucles...
  • rougeTotal = rougeTotal / (precision1 * precision1) ' x*y
  • vertTotal = vertTotal / (precision1 * precision1) ' x*y
  • bleuTotal = bleuTotal / (precision1 * precision1) ' x*y
  • 'coul : couleur finale, moyenne de l'image
  • coul = Color.FromArgb(rougeTotal, vertTotal, bleuTotal)
  • Return coul
  • Catch ex As Exception
  • 'erreur, couleur rouge vif
  • Return Color.Red
  • MsgBox(ex.Message)
  • End Try
  • End Function
  • '----------------------------------------------------------------
  • 'pour le projet entier(classement des images, etc...), voir Zip
'Fonction retournant la couleur moyenne d'une image :

    ''' <summary>retourne la couleur d'ambiance d' une image</summary>
    ''' <param name="bitmp">l'image a utiliser</param>
    ''' <param name="precision1">le nombre de boucles en hauteur et largeur</param>
    ''' <param name="precision2">le nombre de pixels vérifiés sur chaques passage d'une boucle</param>
    '''<remarks>en cas d'erreur, la fonction retourne une couleur rouge</remarks>
    Public Function checkColor(ByVal bitmp As Bitmap, Optional ByVal precision1 As Integer = 5, Optional ByVal precision2 As Integer = 4) As Color
        Try
            'Pour eviter erreur "objet utilisé... " en cas d'appel de la fonction dans un thread séparé
            Dim imgsize As Drawing.Size = bitmp.Size
            Dim coul As New Color
            'composantes moyennes finales de l'image
            Dim rougeTotal As Int32 = 0
            Dim vertTotal As Int32 = 0
            Dim bleuTotal As Int32 = 0
            Dim bouclex As Int64 = 0 'emplacement x de la zone a checker
            'Parcours l'image sur une "grille" et fait une moyenne des composantes RGB  sur de petites zones
            'Boucle horizontale
            ' x-1
            For boucle1 As Integer = 0 To precision1 - 1
                bouclex += (imgsize.Width / precision1) - 5 'x | -5: decal pixel

                Dim boucley As Int64 = 0 'emplacement y de la zone a checker
                'Boucle verticale
                ' y-1
                For boucle2 As Integer = 0 To precision1 - 1
                    boucley += (imgsize.Height / precision1) - 5 'y | -5: decal pixel
                    'composantes moyennes sur une boucle verticale
                    Dim rouge As Int32 = 0
                    Dim vert As Int32 = 0
                    Dim bleu As Int32 = 0
                    'check une petite zone de pixels
                    '--------------------------------------------
                    '3 fois x
                    For i = bouclex To bouclex + precision2 - 1 '+precision independant de x et y : nbre de pixels contigu a checker
                        For j As Integer = boucley To boucley + precision2 - 1 '+precision independant de x et y : nbre de pixels contigu a checker
                            'ajoute les differentes composantes des pixels 
                            rouge += bitmp.GetPixel(i, j).R
                            vert += bitmp.GetPixel(i, j).G
                            bleu += bitmp.GetPixel(i, j).B
                        Next
                    Next
                    'moyenne des composantes sur la zone
                    rouge = rouge / (precision2 * precision2)
                    vert = vert / (precision2 * precision2)
                    bleu = bleu / (precision2 * precision2)
                    'Ajout de la moyenne de zone à la moyenne finale
                    rougeTotal += rouge
                    vertTotal += vert
                    bleuTotal += bleu
                    '--------------------------------------------
                Next
            Next
            'moyenne des couleurs de l'image en fonctions du nombre de boucles...
            rougeTotal = rougeTotal / (precision1 * precision1) ' x*y
            vertTotal = vertTotal / (precision1 * precision1) '  x*y
            bleuTotal = bleuTotal / (precision1 * precision1) '  x*y
            'coul : couleur finale, moyenne de l'image
            coul = Color.FromArgb(rougeTotal, vertTotal, bleuTotal)
            Return coul
        Catch ex As Exception
            'erreur, couleur rouge vif
            Return Color.Red
            MsgBox(ex.Message)
        End Try
    End Function

'----------------------------------------------------------------
'pour le projet entier(classement des images, etc...), voir Zip


 Conclusion

Je n'ai pas trouvé plus original pour classer mes fonds d'écrans^^

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) CONTROLE UTILISATEUR COLORPICKER FAÇON PHOTOSHOP

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN GIF ANIMÉ par Le Pivert
Source avec une capture GRAPH PHP COURBE DE CHARGE par s.defaye
Source avec Zip Source avec une capture BOULE DE CRISTAL par BLUEBIBUBBLE
VB6 - DÉPLACEMENT D'UN CONTRÔLE SUR UN SEGMENT DE DROITE DÉL... par ucfoutu
Source avec Zip Source .NET (Dotnet) APPLICATION DE DESSIN par fsafsafsaf

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture Source .NET (Dotnet) CREER UN GIF ANIMÉ par Le Pivert
Source avec Zip Source avec une capture CRÉATION D'UN MASQUE GRAPHIQUE POUR MODIFIER LA COULEUR D'UN... par Dudule_73
Source avec Zip LA NOUVELLE VERSION DU NEW FOLDER LOOK EN FRANÇAIS par 4every1
Source avec Zip Source avec une capture TRANSFORMATION IMAGE COULEURS A IMAGE NOIR SUR BLANC par boutemine
Source avec Zip Source avec une capture ENLEVER LA COULEURS D'UNE IMAGE par max12

Commentaires et avis

Commentaire de Redman31100 le 23/02/2008 16:27:18 7/10

Pas mal ! Ton projet me donne idée : faire un logiciel qui permet de faire une mosaïque composant une image générale en utilisant la couleur moyenne des images mosaïques correspondant a la couleur du pixel de l'image générale.

Commentaire de Yaurthek le 23/02/2008 22:02:47

Merci de ton commentaire,
En effet, c'est une des applications possibles, j'y avait pensé aussi mais il existe déjà pas mal de logiciels qui le permettent et je ne sait pas ce que ça donnera niveau performances...

Commentaire de lukebalthazar le 06/03/2008 09:06:09

je vais me permettre une hypothese:

1-Si tu moyennes les valeurs RGB tu va tendre vers du gris moyen (128/128/128)...eu tout cas plus le nombre de pixel testé est important plus on tend vers.

2- En revanche si tu passes par HSL tu n'as plus se probleme....

Commentaire de Redman31100 le 06/03/2008 12:44:58

C'est quoi le HSL ? ^^

Commentaire de lukebalthazar le 06/03/2008 13:12:13

Hue (H) S = saturation L = luminosite (luminance).

http://www.freevbcode.com/ShowCode.asp?ID=7801
je suis pas developpeur en meme temps mais je travaille sur une appli où je dois definir la couleur dominante (donc ca revient a peut près au meme). faire la moyenne des composante RGB est une erreur (que j'ai commise).


cherche sur le site ya plein de code la dessus.

Commentaire de Redman31100 le 06/03/2008 13:52:32

Ah alors j'apelle ça le HSV moi. ^^

Commentaire de Yaurthek le 06/03/2008 19:21:14

Merci pour ta remarque, mais pourtant, la couleur obtenue est assez représentative je trouve.
par contre le problème se situe dans ma fonction différenciant les couleurs...
Enfin bon, je vais regarder ce que tu propose.

Commentaire de Yaurthek le 26/05/2008 22:18:20

Salut tout le monde
> lukebalthazar : Aujourd'hui, j'ai eu enfin le courage et l'envie de chercher comment faire avec le HSB ou HSL (diff?rent de HSV Redman31100 :) voir http://en.wikipedia.org/wiki/HSL_color_space)
et bien je ne vois pas comment faire pour trouver la couleur d' "ambiance" : si je fais la moyenne avec les valeurs HSB et que l'image a, par exemple du jaune/rouge et du bleu, on obtient du vert... et dans le cas d'une image avec des tons se ressemblant, les couleurs moyennes retourn?es pas HSB et par ma m?thode (RGB) sont quasi-identique ! (je vois donc pas trop l'int?r?t, m?me si sur le principe, {128,128,128} ?a fait du gris...)
Si tu pouvais me dire comment tu fait, puisque ta m?thode marche si bien et que la mienne est une erreur ;-) ...
Merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Conversion image couleur en noir et blanc [ par merlin ] Je cherche a convertir l'image d'un picturebox en couleurs vers une image monochrome, pour ensuite la mettre dans le clipboard (prend moins de place). couleur de fond invisible [ par hbouzo ] Je veux bien savoir comment faire pour q'une couleur de fond d'une image(picture) en vb soit invisible.j'en est Besoin pour la création d'un jeux de s Considerer la couleur blanche d'une image comme transparente [ par khalilo ] Salut je cherche comment faire pour afficher tt les pts d'une image sauf les pts blancs car en fait je veux pouvoir choisir la couleur de fond.Merci à Récupérer le chemin du dossier de l'appli ?! [ par minipod ] Comment charger l'image 'map.jpg' dans un composant Picture1 en sachant que l'image se trouve dans le dossier de l'appli ? Merci. SVP AIDER MOI VITE dossier perso [ par fragmatyc ] ...--=&lt;(\_+=+&lt;Fragy's&gt;+=+_/)&gt;=--...Jai essayer de créé le fichier Desktop.ini ke windows créé lorsque l'on met un objet image [ par MadProf ] Comment faire pour rendre une couleur d'une image transparente sans l'utilisation de directX ?Par exemple j'ai mon image nommé image1 et je veux que l Transparence d'une image dans un UserControl [ par Ricou13 ] Salut, Voici un pb simple à tester : Vous crééz un contrôle utilisateur. Vous mettez le fond du formulaire (BackColor) dans une couleur flashie et sa recupéré une couleur d'une image [ par laurent180 ] Bonjour a tous,voila le programme consiste a récupéré le num de couleur d'une image c pt tout simple mais sa fct pas il me met erreur erreur d'executi images gif d'1 dossier listées dans une image list [ par quitues ] bonjour a tous,je m'explique : je developpe un ptit chat en reseau, et j'aimerais trouver un (bout de) code qui permet de lister toutes les images *.g PIXEL, quelle est ta couleur? [ par 3dflix ] bonjour,je souhaiterai connaitre la couleur (rvb, hexa ou autre) d'un pixel d'une image sans ke celle ci soit affichée a l'écran. tout ce que g trouvé


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 1,279 sec (4)

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