Accueil > > > 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
Description
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^^
Sources du même auteur
Sources de la même categorie
Commentaires et avis
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 ]
...--=<(\_+=+<Fragy's>+=+_/)>=--...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é
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|