Maison  >  Questions et réponses  >  le corps du texte

python - Comment comprendre le fonctionnement de la conversion des valeurs RVB en caractères dans PIL

ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,\"^`'. ")
def get_char(r,g,b,alpha = 256):
    if alpha == 0:
        return ' '
    length = len(ascii_char)
    gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)

    unit = (256.0 + 1)/length
    return ascii_char[int(gray/unit)]

if __name__ == '__main__':

    im = Image.open(IMG)
    im = im.resize((WIDTH,HEIGHT), Image.NEAREST)

    txt = ""

    for i in range(HEIGHT):
        for j in range(WIDTH):
            txt += get_char(*im.getpixel((j,i)))
        txt += '\n'

Comment comprendre les données transmises dans la fonction get_char par get_char(*im.getpixel((j,i))), à quelle variable cela appartient-il et quel est le principe de fonctionnement de cette fonction

高洛峰高洛峰2686 Il y a quelques jours740

répondre à tous(2)je répondrai

  • 我想大声告诉你

    我想大声告诉你2017-06-12 09:28:11

    Dans la boucle for, im.getpixel((j,i) fait référence à l'obtention de la valeur RVB de chaque pixel de coordonnées correspondant. Vous pouvez obtenir la valeur d'une coordonnée fixe, puis l'imprimer pour voir

    répondre
    0
  • 習慣沉默

    習慣沉默2017-06-12 09:28:11

    En fait, RVB possède son propre système théorique, qui met en œuvre uniquement les opérations correspondantes par le calcul des pixels. Pour faire simple, pour donner un exemple simple, tel que (255, 255, 255), nous convertissons les nombres ci-dessus en hexadécimal, qui sont FF, FF, FF. Une fois épissé, il devient #FFFFF.

    répondre
    0
  • Annulerrépondre