Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2011-03-13 18:21:11 Comment connaitre la couleur dominante d'un sketch ?

jeremyvey
nouveau membre
Lieu: Toulouse 31000
Date d'inscription: 2011-03-13
Messages: 7
Site web

Comment connaitre la couleur dominante d'un sketch ?



Hello !

Je suis en train de développer un projet où un dessin s'exécute en fonction de tel et tel paramètre.
Seulement j'aurais aimer connaitre la dominance de couleur pour qu'à une certaine saturation de l'espace dessiné (sur fond blanc) le dessin s'enregistre et reprend à zéro.

J'ai regardé du coté de la méthode get() et des pixels, or il est impossible que cela marche étant donné qu'il ne s'agit pas d'une image chargé dans Processing mais d'un dessin de programmation…

Je solicite alors votre aide !

Merci d'avance chers Processors ( comme disent les anglophones de cette communauté wink )


« Des principes, pas de recettes » Karl Gerstner

Hors ligne

 

#2 2011-03-13 19:17:11 Re : Comment connaitre la couleur dominante d'un sketch ?

oyster_twiter
membre
Lieu: saint-herblain
Date d'inscription: 2008-04-01
Messages: 444
Site web

Re: Comment connaitre la couleur dominante d'un sketch ?



Salut JeremyVey,

Bienvenu sur le forum.big_smile

Concernant ta question, tu peux utiliser get() avec autre chose qu'une image importée.
get() opère sur le pixel en court, ce peux être un pixel extrait d'une image, d'une vidéo, d'une photo...
Voici un petit bout de code qui pourrait t'aider à y voir plus clair:

void setup() {
  for(int i=0; i<width; i++) {
    for(int j=0; j<height; j++) {
      color c = color(random(255), random(255), 0);
      stroke(c);
      point(i, j);
    }
  }
}


void draw() {
  color catchColor = get(mouseX, mouseY);
  float r = red(catchColor);
  float g = green(catchColor);
  float b = blue(catchColor);
  println(r+"  "+g+"  "+b);
}

+++

Hors ligne

 

#3 2011-03-14 12:48:13 Re : Comment connaitre la couleur dominante d'un sketch ?

jeremyvey
nouveau membre
Lieu: Toulouse 31000
Date d'inscription: 2011-03-13
Messages: 7
Site web

Re: Comment connaitre la couleur dominante d'un sketch ?



MODIF

Je croyais avoir trouver un début de solution en définissant une zone de lecture dans le get (x,y,width,height).
Seulement il me met ce message d'erreur : cannot convert from PImage to int.
Que dois-je comprendre ? Est-ce que ce n'est pas possible à moins qu'il s'agisse d'une image ?
Merci d'avance pour la réponse smile

——

Merci pour le message de bienvenue et pour le petit code big_smile

En effet, cela m'éclaire un peu car je croyais que ce n'était que réservé à une image.

Seulement voilà moi je ce que je souhaite c'est que le get() lise toute la surface du sketch, et pas qu'un seul pixel, pour que je puisse récupérer une dominante de couleur.

Par exemple mon programme dessine en bleu sur fond blanc.
Au bout d'un certain temps le bleu du dessin envahit le fond blanc.
Il faut alors que je dise au programme : lorsqu'il ne me reste plus que 10% de blanc j'enregistre mon dessin, je nettoie le sketch et je relance le dessin.

Peut-être que je me trompe de méthode pour y parvenir mais je ne vois pas d'autres astuces que celui de la couleur…

En tout cas merci pour cette réponse claire et rapide ! wink

Dernière modification par jeremyvey (2011-03-14 12:57:33)


« Des principes, pas de recettes » Karl Gerstner

Hors ligne

 

#4 2011-03-14 14:17:09 Re : Comment connaitre la couleur dominante d'un sketch ?

22_
membre
Lieu: paris
Date d'inscription: 2010-04-08
Messages: 189

Re: Comment connaitre la couleur dominante d'un sketch ?



Salut,
comme le dit oyster_ la méthode get(x,y) - pas get(x,y,width, height) - te renvoie la couleur d'un pixel de ta sortie, sous forme d'un objet color.
Peu importe que tu manipules une image ou pas.
Tu peux aussi utiliser le tableau pixels[], c'est un peu plus pénible mais plus rapide.

Hors ligne

 

#5 2011-03-14 14:52:09 Re : Comment connaitre la couleur dominante d'un sketch ?

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: Comment connaitre la couleur dominante d'un sketch ?



Bonjour,

jeremyvey a écrit:

Seulement voilà moi je ce que je souhaite c'est que le get() lise toute la surface du sketch, et pas qu'un seul pixel, pour que je puisse récupérer une dominante de couleur.

Avec une double boucle tu peux parcourir l'ensemble des pixels et remplir tes variables. La double boucle est dans le setup() du code qu'Oyster t'as donné plus haut

jeremyvey a écrit:

Par exemple mon programme dessine en bleu sur fond blanc.
Au bout d'un certain temps le bleu du dessin envahit le fond blanc.
Il faut alors que je dise au programme : lorsqu'il ne me reste plus que 10% de blanc j'enregistre mon dessin, je nettoie le sketch et je relance le dessin.

Pour faire ça, tu peux utiliser plusieurs passages de la boucle draw() pour construire ton dessin au fur et à mesure, afin de tester à chaque fois la valeur de "remplissage". Voila un code qui additionne les valeurs de luminosité à partir du tableau de pixels, et qui remets l'image à zéro quand une certaine valeur est dépassée :

Code (processing) :

Hors ligne

 

#6 2011-03-16 18:09:02 Re : Comment connaitre la couleur dominante d'un sketch ?

jeremyvey
nouveau membre
Lieu: Toulouse 31000
Date d'inscription: 2011-03-13
Messages: 7
Site web

Re: Comment connaitre la couleur dominante d'un sketch ?



OUPS ! Désolé pour l'absence…

Merci pour ces pistes de solutions, je vais explorer tout ça et vous tenir au courant.
Pour la méthode de brightness() c'est pas mal, je vais voir comment je peux bidouiller tout ceci pour l'incorporer dans mon code.

Encore merci et je ne manquerais pas de signaler dans le post si cela fonctionne ! wink


« Des principes, pas de recettes » Karl Gerstner

Hors ligne

 

#7 2011-03-21 10:23:52 Re : Comment connaitre la couleur dominante d'un sketch ?

jeremyvey
nouveau membre
Lieu: Toulouse 31000
Date d'inscription: 2011-03-13
Messages: 7
Site web

Re: Comment connaitre la couleur dominante d'un sketch ?



Bon…
Je dois pas être doué pour détourner les codes.
En vérité je crois que mon sketch est trop grand pour que ça marche (entre 800*600 et 1440*900 pixels), du coup j'obtiens des valeurs de folies et il existe même un plafond pour ces valeurs !
Je me suis débrouillé pour calculer combien de temps en moyenne le sketch arrive à saturation pour le nettoyer toute les X minutes…

En tout cas merci pour votre aide et à bientôt !


« Des principes, pas de recettes » Karl Gerstner

Hors ligne

 

#8 2011-03-21 10:44:42 Re : Comment connaitre la couleur dominante d'un sketch ?

oyster_twiter
membre
Lieu: saint-herblain
Date d'inscription: 2008-04-01
Messages: 444
Site web

Re: Comment connaitre la couleur dominante d'un sketch ?



Salut JeremyVey,

Tu peux travailler avec processing sur des sketch de 30000*30000 si tu veux smile ou plus. Le risque de plantage dépendra des capacités de ton CPU à encaisser la somme de calcul (et ta carte graphique si tu utilise OpenGL).
N'hésites pas à poster ton code qui te pose problème, ça nous permettra peut être de t'aider.

NB : les variables de type int sont limitées en contenance,  si tu a besoin de très grand chiffres tu peux  utiliser des long:

citation :

For int, from -2147483648 to 2147483647, inclusive
For long, from -9223372036854775808 to 9223372036854775807, inclusive

+++

Hors ligne

 

#9 2011-03-21 21:59:30 Re : Comment connaitre la couleur dominante d'un sketch ?

cdriko
modérateur
Lieu: Le Landreau
Date d'inscription: 2010-07-16
Messages: 76
Site web

Re: Comment connaitre la couleur dominante d'un sketch ?



heu...
il me semble qu'il ya un outil mathématique très puissant, ...mais néanmoins un peu compliqué à utiliser :
c'est la MOYENNE :tongue

Code (processing) :

Avec ceci, la valeur de la mesure n'est pas affectée par la taille de ta fenêtre

Dernière modification par cdriko (2011-03-21 22:02:21)

Hors ligne

 

#10 2011-03-22 09:29:59 Re : Comment connaitre la couleur dominante d'un sketch ?

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: Comment connaitre la couleur dominante d'un sketch ?



Hello,

Il n'y a pas vraiment de problème avec l'exemple puisque les valeurs de couleurs sont normalisées entre 0 et 1 (par colorMode(RGB, 1); dans le setup), au maximum somme vaudra donc width * height, c'est à dire 160 000 dans l'exemple ou 900 000 000 avec une image de 30 000 x 30 000 smile
C'est en utilisant des valeurs sur 255 que ça peut exploser le plafond des "int".
Enfin, il y a une solution très simple aussi, sans même utiliser de moyenne, c'est de réduire la valeur, en la divisant par 1000 par exemple avant de l'ajouter à somme.

Hors ligne

 

#11 2011-04-12 10:36:02 Re : Comment connaitre la couleur dominante d'un sketch ?

jeremyvey
nouveau membre
Lieu: Toulouse 31000
Date d'inscription: 2011-03-13
Messages: 7
Site web

Re: Comment connaitre la couleur dominante d'un sketch ?



Super merci pour ces précisions !!!! big_smile

Je suis désolé pour tout ce temps d'absence mais ce projet est passé, j'ai fini par opter pour la solution de temporisation du sketch qui toutes les X minutes se rafraichit…

Autrement je pense qu'en effet c'est une problème de contenance du « int ».
Je vais essayer avec « long » (je ne savais pas que cela existait…).

Encore un grand merci pour toute cette aide !

Je vais poster une nouvelle question pour Processing, j'espère que vous saurez me répondre aussi avec autant de générosité et d'entrain wink

À bientôt !


« Des principes, pas de recettes » Karl Gerstner

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2025