133 votes

Obtenir le RVB de pixel à l'aide de PIL

Est-il possible d'obtenir la couleur RVB d'un pixel en utilisant PIL ? J'utilise ce code :

im = Image.open("image.gif")
pix = im.load()
print(pix[1,1])

Cependant, il ne produit qu'un nombre (par exemple 0 ou 1) et non trois nombres (par exemple 60,60,60 pour R,G,B). Je suppose que je ne comprends pas quelque chose à propos de la fonction. J'aimerais avoir des explications.

Merci beaucoup.

9voto

Avec engourdi :

im = Image.open('image.gif')
im_matrix = np.array(im)
print(im_matrix[0][0])

Donner le vecteur RVB du pixel en position (0,0)

4voto

kobejohn Points 2485

Les GIF stockent les couleurs comme l'une des x couleurs possibles dans une palette. En savoir plus sur la palette de couleurs limitée GIF. Donc PIL vous donne l'index de palette, plutôt que les informations de couleur de cette couleur de palette.

Modifier : Suppression du lien vers une solution de publication de blog qui avait une faute de frappe. D'autres réponses font la même chose sans la faute de frappe.

2voto

Marcel Wilson Points 357

Une alternative à la conversion de l'image est de créer un index RVB à partir de la palette.

from PIL import Image

def chunk(seq, size, groupByList=True):
    """Returns list of lists/tuples broken up by size input"""
    func = tuple
    if groupByList:
        func = list
    return [func(seq[i:i + size]) for i in range(0, len(seq), size)]


def getPaletteInRgb(img):
    """
    Returns list of RGB tuples found in the image palette
    :type img: Image.Image
    :rtype: list[tuple]
    """
    assert img.mode == 'P', "image should be palette mode"
    pal = img.getpalette()
    colors = chunk(pal, 3, False)
    return colors

# Usage
im = Image.open("image.gif")
pal = getPalletteInRgb(im)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X