2013-02-09 6 views
0

J'ai une photo que je charge sur un bitmap. Je vérifie la couleur de certains pixels. Mais dans l'image parfois quelque chose qui devrait être par exemple rouge est un peu plus marron, magenta, orange etc, à cause de la lumière et d'autres facteurs. J'utilise la méthode getPixel (x, y) qui renvoie une valeur int de Color. Est-il possible de vérifier si cette valeur int est dans l'intervalle qui définit les couleurs qui sont similaires au rouge. Ou est un site Web ou quelque chose, où je peux trouver des définitions ou des descriptions de couleurs?Android Bitmap: getPixel() couleur

Répondre

1

Oui. De http://developer.android.com/reference/android/graphics/Color.html, l'entier Color est au format 0xffRRGGBB. (Le ff est en fait un canal alpha, c'est-à-dire l'opacité, mais il est généralement opaque d'où ff).

De nombreux sites vous permettent d'entrer de telles valeurs pour voir la couleur, par exemple http://www.colourchart.net/. Vous pouvez choisir les limites extérieures de chaque composant de couleur. Vous pouvez également utiliser Color.colorToHSV() pour spécifier les limites en termes de teinte, de saturation et de luminosité au lieu de rouge, vert et bleu. Cela peut être logiquement plus facile dans votre contexte.

+0

Merci, je pense que ce site sera très utile pour moi !! – Ziva

+0

Pas de problème. Si vous êtes heureux, acceptez la réponse! –

1

Basicall RGB ne convient pas pour la comparaison de couleurs, mais il existe un bon modèle de couleur appelé HSV. Vous devez donc convertir la valeur RVB en HSV, puis comparer la valeur de teinte des couleurs avec un seuil.

Par exemple Hue valeur de la couleur verte est de 120, mais vous pouvez accepter les valeurs comprises entre 90 et 150

Ce lien montre comment convertir entre les modells couleur: http://www.cs.rit.edu/~ncs/color/t_convert.html

En savoir plus sur HSV modell: http://en.wikipedia.org/wiki/HSL_and_HSV

Questions connexes