Aide Python print rgb

Bonjour,

Je suis en première et je dois faire cet exercice en python. Mais je ne comprends pas pourquoi mon programme ne marche pas. Ci-dessous, la fonction
printRVB()
permet d'afficher le code
(r, v, b)
d'un pixel aux coordonnées
(x, y)
provenant de l'image
img
. Je dois compléter ce script et le tester avec l'image
rose.jpg
.

Mon script :

img = Image.open("rose.jpg")
img.show()
from PIL import Image
def printRVB(img, p):
    p = img.getpixel((320, 240))
    print(p)
printRVB(img, p)


Mercii

Configuration: Windows / Chrome 97.0.4692.99

2 réponses

  1. Modérateur
    Bonjour,

    Il faut faire les
    import
    s avant d'appeler la(les) fonction(s) ou l'(les) objet(s) importé(s), sinon python rencontre des symboles dont il ne connaît pas la signification.

    En l'occurrence, tu utilises l'objet
    Image
    alors que tu ne l'as pas encore importé. Ensuite, et suivant ce même principe, je t'invite à écrire ton script en déclarant d'abord toutes tes fonctions et en finissant par ton programme principal, dans son intégralité.

    Enfin, en toute rigueur, on démarre un fichier python avec le shebang adéquat et l'encodage (ce qui permet d'utiliser des caractères accentués dans les commentaires)

    Une fois remis en forme, ton programme devient :

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
    
    # Imports
    
    from PIL import Image
    
    # Fonctions
    
    def printRVB(img, p):
        p = img.getpixel((320, 240))
        print(p)
    
    # Programme principal
    
    img = Image.open("rose.jpg")
    img.show()
    printRVB(img, p)
    1. Contributeur
      Je continue à me demander si la fonction printRVB() est bien définie...
    2. Modérateur
      @yg_beEffectivement il y a une confusion.
      • Du point de vue de la syntaxe, dans
        printRVB
        ,
        p
        semble désigner à la fois un paramètre et une variable locale
      • D'un point de vue sémantique, il y a visiblement un mélange entre :
        • les coordonnées du pixel
          (x, y)
          (qu'on pourrait appeler
          xy
          dans le code au lieu de
          p
          et qui vaut visiblement
          (320, 240)
          )
        • la couleur du pixel
          (r, v, b)
          (qu'on pourrait appeler
          rvb
          au lieu de
          p
          ).


      Bref laissons jenjen nous montrer à quoi ressemble son programme une fois corrigé....