-3
votes

Changer la couleur dans les images RVB

J'ai une image (je l'ai dans le format numpy et Pil), et je veux changer lorsque les valeurs RVB sont [0,4, 0,4, 0,4] à [0.54, 0,27 , 0.07] .

En faisant cela, je veux changer la couleur de la route de gris en brun:

route


2 commentaires

3 Réponses :


1
votes

Vous pouvez essayer cette approche numpie: xxx


1 commentaires

Merci, mais cela m'a donné cette erreur: Mismachatch de forme: la valeur de la forme (3,) n'a pas pu être diffusée à l'indexation du résultat de la forme (13481,)



0
votes

L'image que vous avez chargée est représentée comme une matrice tridimensionnelle. La forme de celle-ci doit être hauteur, largeur, canal de couleur . C'est à dire. Si ce n'est que des canaux RVB (certains peuvent avoir RGBA, etc.), les propriétés matricielles ressembleraient à une hauteur , largeur, 3

Le reste de cela devrait être tout comme vous traitez un tableau normal. Vous pouvez le voir comme ça:

pixel = image [hauteur] [largeur] [colorChannel]

La réponse de Quang Hoang a une solution simple à votre problème.


4 commentaires

Merci, mais cela m'a donné cette erreur: Mismachatch de forme: la valeur de la forme (3,) n'a pas pu être diffusée à l'indexation du résultat de la forme (13481,)


Vérifiez la forme de votre image via image.shape . Il devrait avoir trois éléments comme je l'ai décrit. Qu'est-ce qu'il retourne?


Qu'as-tu fait pour avoir cette erreur? Je viens de tester sur une image RVB de 1600x1200. La forme me donne (1600, 1200, 3) et je pouvais accéder au dernier pixel, image [1599] [1199] [2] sans aucun problème


Mon image est une image 96x96 rgb et je viens de taper: test [np.where (test == (0.4,0.4,0.4))] = (0.54,0.27,0.27). alors j'ai cette erreur



0
votes

Je dois être d'accord avec Majid Shirazi concernant le Solution proposée de Quang Hong . Jetons un coup d'œil à: xxx

puis, idx est un 3 tuple contenant chacun un ndarray pour tous x < / Code> -COORDINATES, Y -COORDINATES ET "CHANNEL" -COORDINATES. De Numpy's indexing , je ne peux pas voir une possibilité de Accédez correctement / manipuler les valeurs dans img de la manière souhaitée à l'aide de la commande proposée. Je peux préférer reproduire l'erreur exacte indiquée dans le commentaire.

Pour obtenir un Integer Array Indexing , le x - et y -Coordinats doit être extrait. Le code suivant montrera que. Alternativement, Indexation de la matrice booléenne pourrait également être utilisé. J'ai ajouté que comme un add-on: xxx

espère que cela aide et clarifie!


0 commentaires