Echanges autour d'EduPython.
Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
je découvre Python en tant qu'enseignant et j'ai en particulier découvert la bibliothèque PIL qui permet très simplement de traiter des images pixel par pixel. On peut générer une double boucle imbriquée pour agir sur chaque pixel sans difficulté technique pour les élèves. On ouvre une image résidant à une adresse donnée, on relève chaque pixel, on restitue l'image après traitement de la couleur en niveau de gris de chaque pixel.
Mon programme fonctionne très bien sur mon PC portable bien que l'application se termine sur un message :
File "C:\EduPython\App\Lib\rpyc.zip\rpyc\core\netref.py", line 196, in __call__
File "C:\EduPython\App\Lib\rpyc.zip\rpyc\core\netref.py", line 71, in syncreq
File "C:\EduPython\App\Lib\rpyc.zip\rpyc\core\protocol.py", line 434, in sync_request
AttributeError: 'str' object has no attribute 'point'
par contre, sur le réseau du lycée, le programme a fonctionné une fois avec un groupe puis il s'est mis à tourner sans interruption possible sur les PC élèves.
J'avais constaté un problème avec la visionneuse Windows aussi ai-je fait mettre Paint comme appli par défaut mais le problème perdure.
Je présume que le problème vient du message d'erreur reçu.
Merci de votre aide si vous avez une idée de la solution.
Hors ligne
Bonsoir,
Pouvez-vous copier/coller ou joindre le code (et éventuellement l'image en question).
Merci,
VM
Hors ligne
Bonjour,
Voici le code :
from lycee import * from PIL.Image import * def traitement(i): (l, h) = i.size for y in range(h): for x in range(l): c = Image.getpixel(i, (x, y)) inv = 255 - c Image.putpixel(i, (x, y), inv) i=open("nb.png") Image.show(i) traitement(i) Image.show(i)
Par contre je ne vois pas comment joindre un fichier pour vous associer mon image.
Merci.
GL
Hors ligne
J'ai mal exploité le code donc l'indentation n'est pas correcte, voici la bonne :
from lycee import * from PIL.Image import * def traitement(i): (l, h) = i.size for y in range(h): for x in range(l): c = Image.getpixel(i, (x, y)) inv = 255 - c Image.putpixel(i, (x, y), inv) i=open("nb.png") Image.show(i) traitement(i) Image.show(i)
Hors ligne
Bonjour, je ne sais pas si c'est à cause de cela, mais il y a un soucis à l'importation :
-> Soit vous importez :
from PIL.Image import *
Dans ce cas les fonctions comme show, putpixel, ... ne sont pas précédées de Image
-> Soit vous importez :
from PIL import Image
et dans ce cas, il faut précéder de Image les noms des fonctions. Cela permet du coup de différencier la fonction open de Python et celle d'Image.
Voici ce que ça pourrait donner (en utilisant les méthodes sur l'objet i) :
from lycee import * from PIL import Image def traitement(i): (l, h) = i.size for y in range(h): for x in range(l): c = i.getpixel((x, y)) inv = 255 - c i.putpixel( (x, y), inv) i=Image.open("nb.png") i.show() traitement(i) i.show()
En effet, le show selon les versions de windows a un fonctionnement plus ou moins aléatoire. Avec mes étudiants, je leur fait enregistrer l'image pour la voir ensuite.
En espérant que cela règle le problème
VM
Hors ligne
En effet je n'ai plus le message d'erreur. Voilà une subtilité de Python que je dois encore travailler.
Je testerai demain au lycée.
Merci beaucoup.
GL
Hors ligne
Bonjour,
Je poste ma question ici car c'est également une question sur la programmation à partir d'une image. J'ai un message d'erreur avec ce programme :
from lycee import *
from PIL import Image
img = Image.open("pomme.jpg")
r,v,b=img.getpixel((100,250))
print("canal rouge : ",r,"canal vert : ",v,"canal bleu : ",b)
Voilà ce que je reçois dans la console Python :
...module lycee actif....
Traceback (most recent call last):
File "<string>", line 566, in run_nodebug
File "C:\Users\ioniq\Dropbox\Mon PC \essai\pomme.py", line 5, in <module>
r,v,b=img.getpixel((100,250))
File "C:\EduPython\App\lib\site-packages\PIL\Image.py", line 1212, in getpixel
self.load()
File "C:\EduPython\App\lib\site-packages\PIL\ImageFile.py", line 244, in load
raise_ioerror(err_code)
File "C:\EduPython\App\lib\site-packages\PIL\ImageFile.py", line 59, in raise_ioerror
raise IOError(message + " when reading image file")
OSError: broken data stream when reading image file
Qu'en pensez-vous ?
D'avance merci
Hors ligne
Bonjour, on dirait que Python n'arrive pas à lire votre image.
* Est-elle enregistrée dans le même dossier que votre programme ?
* Essayez avec paint de l'enregistrer au format png plutôt.
N'hésitez pas si cela ne fonctionne pas !
VM
Hors ligne
Pages : 1