Aide Python print rgb

jenjen -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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)
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Je continue à me demander si la fonction printRVB() est bien définie...
      0
      1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940 > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Effectivement 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é....
        0